【发布时间】:2016-09-27 11:15:26
【问题描述】:
以下工作,但将时间转换为long,然后是Instant,以及将时区转换为TimeZone,然后是ZoneId,似乎有点笨拙。有没有更清洁的方法来做到这一点?
java.time.Instant instant = java.time.Instant.ofEpochMilli(jodaDateTime.getMillis());
OffsetDateTime offsetDateTime = OffsetDateTime.ofInstant(instant,
jodaDateTime.getZone().toTimeZone().toZoneId());
【问题讨论】:
-
这看起来是解决方案的预期复杂性
-
它看起来不错 - 如果性能不是问题,您可以通过字符串来实现:
OffsetDateTime.parse(ISODateTimeFormat.dateTime().fmt(jodaDateTime), DateTimeFormatter.ISO_OFFSET_DATE_TIME);- 不确定它是否不那么笨拙...... -
我建议您在代码中只使用其中一种。同时使用 joda.time 和 java-time 您可能会在代码中陷入复杂和混乱。您可以做的另一个解决方案是使用格式化程序将您的时间从 joda 输出到字符串,然后使用不同的 JavaTime 格式化程序对其进行反序列化。
标签: java jodatime java-time datetime-conversion