为什么Android中的Calendar
在不同的Android设备上给出不同的日期?我确实得到了默认的区域设置,但我仍然有同样的问题。
代码:
calendar = Calendar.getInstance();
currentDate = DateFormat.getDateInstance(DateFormat.DATE_FIELD,Locale.getDefault())
.format(calendar.getTime());
为什么android中的日历在不同的android设备中给出不同的日期?
Calendar.getInstance
使用系统时钟,因此如果不同设备的时钟设置不同,您将获得不同的时间- 您的日期格式使用JVM的默认时区(与区域设置无关(。由于所有时区的日期都不相同,因此您应该获得不同的日期(即使系统时钟正确设置为当前时间(
也就是说,Calendar
和DateFormat
类有相当严重的设计问题,我认为它们已经过时很久了。如果您在应用程序中对日期或时间进行了大量的处理,那么您可能应该使用java.time。它是现代的Java日期和时间API,设计得更好,使用起来也更好。
问题:我可以在Android上使用java.time吗
是的,java.time在较旧和较新的Android设备上都能很好地工作。它只需要至少Java 6。
- 在Java 8及更高版本中,以及在较新的Android设备上(从API 26级开始(,现代API内置
- 在Java6和7中,获得ThreeTen Backport,即新类的Backport(JSR310的ThreeTen;请参阅底部的链接(
- 在(旧的(安卓系统上使用安卓版的ThreeTen Backport。它被称为ThreeTenABP。并确保您使用子包从
org.threeten.bp
导入日期和时间类
链接
- Oracle教程:日期-时间,解释如何使用
java.time
- Java规范请求(JSR(310,其中首次描述了
java.time
- ThreeTen Backport项目,
java.time
到Java 6和7的Backport(JSR-310的ThreeTen( - ThreeTenABP,安卓版ThreeTen背包
- 问题:如何在Android项目中使用ThreeTenABP,有一个非常彻底的解释