下面是包含时区信息的 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
,而不是具有系统的 UTC 偏移量date1
。
如何反序列化 ISO8601 字符串以保留 UTC 偏移量?