異なる TimeZones にある 2 つの DateTime オブジェクトを比較するのに苦労しています。
私がすでに知っていること:
1) 「isBefore()」メソッドはTimeZones を考慮していないことを知っています。したがって、次の「if」条件は true ではありません (true にしたいのですが):
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でこれを達成するにはどうすればよいですか?