【发布时间】:2013-09-27 14:03:14
【问题描述】:
下面是包含时区信息的 ISO8601 日期字符串的反序列化。注意时区信息丢失了:
scala> val date1 = new DateTime().withZone(DateTimeZone.forID("Europe/Berlin"))
date1: org.joda.time.DateTime = 2013-09-22T18:42:15.348+02:00
scala> date1.getZone()
res45: org.joda.time.DateTimeZone = Europe/Berlin
scala> val date2 = new DateTime(date1.toString())
date2: org.joda.time.DateTime = 2013-09-22T19:42:15.348+03:00
scala> date2.getZone()
res46: org.joda.time.DateTimeZone = Europe/Vilnius
scala> date1.getZone() == date2.getZone()
res47: Boolean = false
时区信息(UTC 偏移量)被序列化,如 ISO8601 字符串末尾的+03:00 和+02:00,但在反序列化后会丢失。如您所见,date2 DateTime 对象,我预计它是date1 的副本,它具有系统的UTC 偏移量,而不是+02:00,date1 有。
如何反序列化 ISO8601 字符串以保留 UTC 偏移量?
【问题讨论】:
标签: java datetime deserialization jodatime