8
私は今日JodaTimeをいじりました、と私は、このテストに合格すると予想:なぜJoda DateTimeをカレンダーに変換して戻ってcenturyOfEraフィールドを変更するだけですか?
@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をカレンダーにラウンドトリップして戻すことはできませんか?またはから変換によって保存されていない
DateTime d = new DateTime();
new DateTime(d.toGregorianCalendar()).isEqual(d); // returns true
new DateTime(d.toGregorianCalendar()).equals(d); // returns false, as you observed
だからいずれか年表やタイムゾーン: