byłem bawić z JodaTime dzisiaj, a ja spodziewałem się tego testu przejść:Dlaczego konwersja Joda DateTime na Kalendarz i powrót zmieniają pole ageOfEra i nic więcej?
@Test
public void dateTimeShouldRoundTrip() {
DateTime originalDateTime = new DateTime(2013, 7, 4, 0, 0);
DateTime roundTrip = new DateTime(originalDateTime.toGregorianCalendar());
assertThat(roundTrip, is(originalDateTime));
}
Ale to się nie powiedzie. Sprawdziłem to pod JodaTime 2.1 i 2.2.
dalszej kontroli (za pomocą SamePropertyValuesAs matcher) pokazuje, że awaria jest spowodowana przez różnicę w nieruchomości centuryOfEra
:
originalDateTime.getCenturyOfEra(); // 20
roundTrip.getCenturyOfEra(); // 21
Więc dlaczego ta zmiana nieruchomość, gdy wszystko inne - rok, miesiąc, dzień, dzień tygodnia, strefa czasowa itp. - czy nie? Czy to błąd? Nie powinieneś być w stanie przemieścić DateTime do kalendarza iz powrotem?