在Java 8中介绍了如何用时区序列化/反序列化日期-时间信息



我想使用Jackson将一个包含日期时间信息的json字符串(如2016-07-22T11:20:48.430-07:00)取消序列化为日期时间对象,目前,我使用的是joda datetime,它运行良好,我能够将2016-07-22T11:20:48.430-07:00转换为datetime(UTC)。

然而,我想使用java8日期时间对象,有什么建议吗?localDateTime没有时区信息,zoneDateTime似乎无法处理以下格式:2016-07-22T11:20:48.430-07:00

OffsetDateTime

您的输入字符串具有与UTC的偏移量,而不是时区。时区是一个偏移量加上一组用于处理异常情况的规则,如夏令时(DST)。

对于带有偏移量的日期-时间值,请使用名称恰当的OffsetDateTime类。

OffsetDateTime odt = OffsetDateTime.parse( "2016-07-22T11:20:48.430-07:00" );

如果需要,您可以申请一个完整的时区。

ZoneId zoneId = ZoneId.of( "Europe/Paris" );
ZonedDateTime zdt = odt.atZone( zoneId );

对于UTC值,提取一个Instant

Instant instant = odt.toInstant();

适配器库

我自己不使用Jackson,但我知道您可以使用各种适配器类来处理java.time类。请参阅问题的第一条评论。另请参阅类似问题的答案。

希望杰克逊最终能够直接处理这些类型的问题。

相关内容

  • 没有找到相关文章

最新更新