我很难比较不同 TimeZones 中的两个 DateTime 对象。
我已经知道的:
1)我知道“isBefore()”方法不考虑时区。因此,下面的“如果”条件不正确(即使我希望它是正确的):
long aRandomTimeSinceTheEpoch = 1234567789L;
String TIMEZONE_SYDNEY_AUSTRALIA = "Australia/Sydney";
DateTimeZone sydneyTimeZone = DateTimeZone.forID(TIMEZONE_SYDNEY_AUSTRALIA);
Chronology chronologySydney = GJChronology.getInstance(sydneyTimeZone);
String TIMEZONE_NEWYORK = "America/New_York";
DateTimeZone newYorkTimeZone = DateTimeZone.forID(TIMEZONE_NEWYORK);
Chronology chronologyNewYork = GJChronology.getInstance(newYorkTimeZone);
DateTime sydneyDateTime = new DateTime(aRandomTimeSinceTheEpoch, chronologySydney);
DateTime newYorkDateTime = new DateTime(aRandomTimeSinceTheEpoch, chronologyNewYork);
if( newYorkDateTime.isBefore(sydneyDateTime) ){
System.out.println("true");
}
2)基于这个答案(https://stackoverflow.com/a/8793980),似乎正确的方法是使用 Period ,因为 Period 是我想要做的正确概念。但是,该代码有时会引发“UnsupportedOperationException - 如果时间段包含年或月”异常(因为我正在处理彼此相距最多 2 年的日期)。
简而言之,我想要的只是一个将 TimeZones 考虑在内的“isBefore()”方法。(并且不会像上面那样抛出异常)。我怎样才能在 Joda 中实现这一点?