gpt4 book ai didi

java - 早期 Android 中 Java 8 之前的 ZonedDateTime 到 Date

转载 作者:行者123 更新时间:2023-12-01 11:33:30 32 4
gpt4 key购买 nike

我正在尝试替换 ZonedDateTime.toInstant方法,因为它仅从 API 26 for Android 开始可用。
但我的应用程序应该支持 API 19。
我想将 ZonedDateTime 转换为 Date 所以我可以做这样的事情:

final Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
final long millis = calendar.getTimeInMillis();

我想要实现的是:
我想以秒、分、小时等为单位计算当前日期和另一个日期之间的差异......可能的最高单位获胜,所以我会得到例如 5 days ago结果。

最佳答案

tl;博士

对于 26 岁之前的 Android,请使用 ThreeTen-ABP图书馆。

避免遗留的日期时间类

旧的日期时间类,例如 CalendarDate是可怕的,真的,糟糕透顶的类(class)。它们充满了糟糕的设计决策和黑客,由不了解日期时间处理的人构建。避开他们。它们完全被 java.time 类所取代,采用 JSR 310 是有原因的——实际上,有很多原因。

避免使用这些遗留类。仅使用 java.time 类。

ThreeTen-Backport 库

对于 Java 6 和 Java 7,大部分 java.time 功能都在 ThreeTen-Backport 项目中向后移植。

三十-ABP

该反向移植进一步适应了 ThreeTen-ABP 项目中早期的 Android (<26)。

我敦促您将此库添加到您的项目中,这样您就可以避免使用可悲的遗留类。

转换

如果您需要与尚未更新到 java.time 的旧代码交互,请在旧代码和现代代码之间来回转换。

在 Java 8 及更高版本中,通过调用新的 to… 进行转换和 from…在旧类上找到的方法。

在后端端口中,使用 to… 进行转换 org.threeten.bp.DateTimeUtils 上的转换方法类(class)。

耗时

您的问题涉及计算耗时。

要计算年、月和日,请使用 Period .

要计算天数(与日历无关的 24 小时时间 block )、小时、分钟、秒和小数秒,请使用 Duration .

搜索堆栈溢出以获取更多信息。这些类(class)已经讲过很多次了。

关于 java.time

java.time框架内置于 Java 8 及更高版本中。这些类取代了麻烦的旧 legacy日期时间类,例如 java.util.Date , Calendar , & SimpleDateFormat .

要了解更多信息,请参阅 Oracle Tutorial .并在 Stack Overflow 上搜索许多示例和解释。规范为 JSR 310 .

Joda-Time项目,现在在 maintenance mode , 建议迁移到 java.time类。

您可以直接与您的数据库交换 java.time 对象。使用 JDBC driver符合 JDBC 4.2或更晚。不需要字符串,不需要java.sql.*类。

从哪里获得 java.time 类?

  • Java SE 8 , Java SE 9 , Java SE 10 , Java SE 11 , 和更高版本 - 标准 Java API 的一部分,具有 bundle 的实现。
  • Java 9 添加了一些小功能和修复。
  • Java SE 6Java SE 7
  • 大多数 java.time 功能在 ThreeTen-Backport 中向后移植到 Java 6 和 7。 .
  • Android
  • java.time 类的更高版本的 Android bundle 实现。
  • 对于早期的 Android (<26),ThreeTenABP项目适应ThreeTen-Backport (上文提到的)。见 How to use ThreeTenABP… .

  • enter image description here

    关于java - 早期 Android 中 Java 8 之前的 ZonedDateTime 到 Date,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54828832/

    32 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com