gpt4 book ai didi

Java 夏令时 (TimeZone/ZoneId) 支持 future 日期/年份

转载 作者:行者123 更新时间:2023-11-29 04:11:00 26 4
gpt4 key购买 nike

在 Java 中有两个选项支持夏令时功能。1.时区2.ZoneId

哪个类更好用? DST 每年都会有所不同。 Java 类如何维护搜索时区和每年的这些配置? DST (zoneId.getRules().isDaylightSavings(instant)) 工作的最大日期或年份是多少?

最佳答案

java.time.ZoneId

使用 ZoneIdZoneRules,现代 java.time 类的一部分。

避免使用 TimeZone,它是糟糕的遗留日期时间类的一部分,由于采用了 JSR 310 而变得过时了。

tzdata

时区信息在 tzdata 中定义存储在您的 JVM 中。如果您关心的区域正在发生变化,请务必进行更新。

区域变化

What is the max date or year for which the DST (zoneId.getRules().isDaylightSavings(instant)) will work?

询问 future 夏令时 (DST) 的最大日期是错误的。

根据当前已知规则,特定地区的人们使用的偏移量的 future 变化,例如夏令时 (DST) 将无限期地计算到 future 。

诀窍在于,世界各地的政客都表现出重新定义各自时区的倾向。这种情况比您想象的更频繁。因此,我们可能希望计划 future 日程安排的规则实际上是不可知的,因为它们是由反复无常的人类而非自然界定义的。

这就是为什么您不应该将 future 的约会预订为时刻。而是使用不确定的 LocalDateTime 类和单独存储的 ZoneId。在计算时间表时,将 ZoneId 应用于 LocalDateTime 以获得特定时刻的 ZonedDateTime 对象。这已在 Stack Overflow 上多次介绍,因此请搜索更多信息和代码示例。


关于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 类?

ThreeTen-Extra项目用附加类扩展 java.time。该项目是 future 可能添加到 java.time 的试验场。您可能会在这里找到一些有用的类,例如 Interval , YearWeek , YearQuarter , 和 more .

关于Java 夏令时 (TimeZone/ZoneId) 支持 future 日期/年份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55156438/

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