Joda Interval失去了时区信息

时间:2013-08-23 13:44:14

标签: java jodatime

我按如下方式定义Joda间隔:

final DateTimeZone fromDtz = DateTimeZone.forID("Europe/Paris");
final DateTime fromDt = DateTime.parse("2013-08-08T01:02:03+0200").withZone(fromDtz);
final DateTimeZone toDtz = DateTimeZone.forID("Europe/London");
final DateTime toDt = DateTime.parse("2013-08-08T01:02:05+0100").withZone(toDtz);
final Interval interval = new Interval(fromDt, toDt);

然而,似乎我在时间间隔结束时丢失了时区信息。如果我在收到的时间间隔内做了一个简单的toString()

2013-08-08T01:02:03.000+02:00/2013-08-08T02:02:05.000+02:00

缺少我要保留的一些信息(间隔结束时日期时间的具体时区)。

我浏览了文档和源代码,看来Interval只包含一个时间顺序。有没有办法告诉Joda保留两个时区而无需手动收集两个单独的DateTime

2 个答案:

答案 0 :(得分:5)

从根本上说,间隔是两个瞬间之间的时间 - 并且瞬间没有时间轴,时区等。它们只是通用时间线上的点 - 自纪元以来的毫秒数。 ReadableInterval暴露getChronology的事实是一个设计缺陷,IMO - 但实际上只有一个这样的年表。如果你想保留更多信息,我相信你需要使用自己的类型。

对于你真正想要使用Joda Time toInterval()方法的地方,它可能就像一个开始/结束对和Interval方法一样简单,但我认为没有内置任何东西Joda时间做你想做的事。

答案 1 :(得分:-1)

尝试使用withZoneRetainFields()