今日、私は JodaTime をいじっていましたが、このテストに合格することを期待していました。
@Test
public void dateTimeShouldRoundTrip() {
DateTime originalDateTime = new DateTime(2013, 7, 4, 0, 0);
DateTime roundTrip = new DateTime(originalDateTime.toGregorianCalendar());
assertThat(roundTrip, is(originalDateTime));
}
しかし、それは失敗します。JodaTime 2.1 と 2.2 の両方で確認しました。
さらに詳しく調べると ( SamePropertyValuesAsマッチャーを使用)、失敗の原因はcenturyOfEra
プロパティの違いであることがわかります。
originalDateTime.getCenturyOfEra(); // 20
roundTrip.getCenturyOfEra(); // 21
では、年、月、日、曜日、タイムゾーンなどの他のすべてが変更されないのに、なぜこのプロパティが変更されるのでしょうか? これはバグですか?DateTime を Calendar に往復させて、再び元に戻すことはできませんか?