【发布时间】:2020-06-05 10:34:18
【问题描述】:
我从 org.joda.time.DateTime 开始,我想用与本地时区等效的时区偏移量输出它。这确实是为了方便用户用眼睛查看时间(而不是使用适当的 ISO8601 解析器进行解析)。
val tz = DateTimeZone.getDefault()
val formatter = JacksonJodaDateFormat(DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ssZ").withZone(tz))
我得到的是这样的:
2020-02-01T05:00:00+0000
我想要的是这个:
2020-02-01T00:00:00-0500
它输出的内容对于我的时区实际上是正确的,但我告诉它 .withZone(tz) 并且我(通过调试器)确认 tz 实际上是 America/New_York。
我正在使用 jodatime 2.10.2。我也在这里混合了jackson-format-jodatime,但我在jackson之外尝试了这个,它的行为是一样的。
The Documents 这样说:
When printing, this zone will be used in preference to the zone from the datetime that would otherwise be used.
否则会打印的是 UTC,但这不是我想要的。
我是否解释了 javadocs 所说的错误?
【问题讨论】:
-
快速澄清:(1)
val不是 Java 关键字 - 来自 Lombok 吗? (2) 您使用的是什么版本的 Java? (从 Java 8 开始,java.time优于 Joda-Time - 但迁移可能不是您的选择)。 -
这是 kotlin,抱歉。我现在在 java 和 kotlin 之间来回走动,甚至都没有考虑过。是的,我使用的是 GraalVM 11,所以我绝对可以改用 java.time,现在大多数人真的认为这是首选(即 joda 被认为已过时)吗?
-
Joda Time 背后的好人在实施
java.time方面发挥了重要作用。他们建议不再使用 Joda Time。请参阅他们的笔记here(“为什么选择 Joda Time”部分)。
标签: jodatime