0

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

代码:

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

1 回答 1

1

为什么 android 中的日历在不同的 android 设备中给出不同的日期?

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

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

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

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

  • 在 Java 8 及更高版本以及更新的 Android 设备(从 API 级别 26 开始)中,现代 API 是内置的。
  • 在 Java 6 和 7 中获得 ThreeTen Backport,即新类的后向端口(对于 JSR 310,ThreeTen;请参阅底部的链接)。
  • 在(较旧的)Android 上使用 ThreeTen Backport 的 Android 版本。它被称为 ThreeTenABP。并确保从org.threeten.bp子包中导入日期和时间类。

链接

于 2018-12-05T08:51:17.203 回答