gpt4 book ai didi

timezone - 为什么第一个 Joda DateTime 实例获得非 UTC 年表?

转载 作者:行者123 更新时间:2023-12-02 00:17:06 25 4
gpt4 key购买 nike

date1date2 在这里不相等,因为时间顺序不同:

val formatter = ISODateTimeFormat.dateTimeNoMillis
val date1 = formatter.parseDateTime("2012-01-03T00:00:00Z")
val date2 = new DateTime(2012, 1, 3, 0, 0, DateTimeZone.UTC)
println(date1.getChronology) // ISOChronology[Europe/Bucharest]
println(date2.getChronology) // ISOChronology[UTC]
assert(date1 === date2) // fails

虽然在这里它们是相等的:

val formatter = ISODateTimeFormat.dateTimeNoMillis
val date1 = formatter.withZone(DateTimeZone.UTC).parseDateTime("2012-01-03T00:00:00Z")
val date2 = new DateTime(2012, 1, 3, 0, 0, DateTimeZone.UTC)
println(date1.getChronology) // ISOChronology[UTC]
println(date2.getChronology) // ISOChronology[UTC]
assert(date1 === date2) // succeeds

我知道 DateTime 实例应该具有相同的 Chronologies 以便被视为相等,但我希望字符串中的 Z 指示符会使格式化程序解析 date1 在 UTC 年表中。我很确定我对 ChronologyDateTimeZone 之间的区别感到困惑,所以如果有人能指出我到底是什么,我将不胜感激合并。

顺便说一句,代码在 Scala 中,断言来自 ScalaTest,但这应该没有任何区别。

最佳答案

除非进一步配置,否则解析将在默认时区中创建日期时间。将“Z”考虑在内,但随后会根据需要调整时间以匹配您的时区(布加勒斯特)。

val date1 = formatter.withOffsetParsed().parseDateTime("2012-01-03T00:00:00Z")

添加 withOffsetParsed() 以获得您想要的行为。

关于timezone - 为什么第一个 Joda DateTime 实例获得非 UTC 年表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12642897/

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