gpt4 book ai didi

android - 最受支持的 Java 日期/时间类

转载 作者:太空狗 更新时间:2023-10-29 13:05:28 25 4
gpt4 key购买 nike

我在 Android Studio 上计算日期/时间时长有问题。我使用过压延机实例,它似乎在大多数情况下都有效,但有时它似乎不准确。

我切换到 LocalDate,它看起来更干净,但据我的研究所知,它仅受 API 26 及更高版本支持。我认为 Joda Time 也有同样的问题。

我的问题是:计算两个日期之间耗时的最佳方法是什么最准确(考虑闰年、具有不同天数的月份等)并受较低 API 版本(即17 岁及以上)?

我一直在研究,看来答案可能是基本的压延机实例,但后来我又回到了可靠性和准确性问题上。任何输入将不胜感激。

最佳答案

tl;dr

使用 ThreeTenABP与早期版本的 Android 一起工作的库。

Period.between(
LocalDate.of( 2017 , Month.JUNE , 23 ) ,
LocalDate.now( ZoneId.of( “Europe/Paris” ) )
)

使用java.time

与最早版本的 Java bundle 在一起的原始日期时间类的用意是好的,但却是一个丑陋而令人困惑的困惑局面。始终避免DateCalendar

Joda-Time 是一个令人惊叹的行业领先成果,旨在打造一个严肃稳健的日期时间框架。它的主要作者 Stephen Colebourne 继续利用在那里学到的经验教训来产生它的继任者,java.time 类内置于 Java 8 和 9 中,由 JSR 310 定义。Joda- Time 项目现在处于维护模式,建议迁移到 java.time。

ThreeTen-Backport 项目中,许多 java.time 功能已向后移植到 Java 6 和 Java 7。该项目包括一个实用程序类,用于与遗留类型相互转换,因此您的新代码可以与旧的现有代码进行互操作。在 ThreeTenABP 项目中进一步适用于早期的 Android。

例如,在 Java 平台上你会调用:

java.time.LocalDate localDate = java.time.LocalDate.of( 2018 , 1 , 23 ) ; // January 23rd, 2018.

…而在使用 ThreeTen-Backport/ThreeTenABP 项目的早期 Android 上,您会调用:

org.threeten.bp.LocalDate localDate = org.threeten.bp.LocalDate.of( 2018 , 1 , 23 ) ; // January 23rd, 2018.

时间跨度

要将耗时计算为未附加到时间轴的时间跨度,请使用:

  • Period 年、月、日
  • Duration 表示小时、分钟、秒和以纳秒为单位的小数秒。

更简单地说......

关于java.time

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

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

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

从哪里获得 java.time 类?

关于android - 最受支持的 Java 日期/时间类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48524309/

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