java - 日历日期不同

标签 java android calendar date java.util.calendar

为什么 Android 中的日历在不同的 Android 设备上给出不同的日期? 我确实获得了默认区域设置,但仍然遇到同样的问题。

代码:

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

最佳答案

Why does Calendar in android gives different dates in different android devices?

  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,即新类的向后移植(ThreeTen for JSR 310;请参阅底部的链接)。
  • 在(较旧的)Android 上使用 ThreeTen Backport 的 Android 版本。它被称为 ThreeTenABP。并确保使用子包从 org. Threeten.bp 导入日期和时间类。

链接

关于java - 日历日期不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53614307/

相关文章:

java - 基本 Java 扫描

java - 在 Spring MVC 中同时处理文件和文本输入字段

android - scrollview 在 android 中太慢

python - 在没有使用构造函数的子类或辅助函数的情况下更改 datetime.date 的日期或月份

calendar - 为什么 EWS 托管 API SyncFolderItems 不返回定期约会

java - JSP:构造变量名称

java - 将静态方法传递给另一个 Activity

java - 具有非必需变量的构造函数

android - 在 Android 中添加提醒

java - 如何强制 SpringBoot 使用多个配置类中的一个且仅一个?