日历日期不同

时间:2018-12-04 13:43:56

标签: java android calendar java-date java.util.calendar

为什么Android中的Calendar在不同的Android设备上给出不同的日期? 我确实获得了默认语言环境,但仍然遇到相同的问题。

代码:

calendar = Calendar.getInstance();
currentDate = DateFormat.getDateInstance(DateFormat.DATE_FIELD,Locale.getDefault())
    .format(calendar.getTime());

1 个答案:

答案 0 :(得分:1)

  

为什么Android中的Calendar在不同的Android设备中给出不同的日期?

  1. Calendar.getInstance使用系统时钟,因此如果不同设备的时钟设置不同,您将获得不同的时间。
  2. 您的日期格式使用JVM的默认时区(与语言环境无关)。由于在所有时区都不是同一日期,因此您应该获得不同的日期(即使系统时钟已正确设置为当前时间)。

也就是说,CalendarDateFormat类存在很大的设计问题,我认为它们早已过时。如果您要对应用程序中的日期或时间进行大量工作,则应该改用java.time。它是现代的Java日期和时间API,设计得更好,使用起来也更好。

问题:我可以在Android上使用java.time吗?

是的,java.time在较新和较旧的Android设备上均可正常运行。它只需要至少 Java 6

  • 在Java 8和更高版本以及更新的Android设备(API级别26以上)中,内置了现代API。
  • 在Java 6和7中,获得ThreeTen Backport,即新类的backport(JSR 310的ThreeTen;请参见底部的链接)。
  • 在(较旧的)Android上,使用Android版本的ThreeTen Backport。叫做ThreeTenABP。并确保您使用子包从org.threeten.bp导入日期和时间类。

链接