3

我正在定义一个 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的 s 进行推车?

4

2 回答 2

5

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

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

于 2013-08-23T13:46:32.243 回答
-1

尝试使用withZoneRetainFields()

于 2013-08-23T13:50:20.127 回答