avrei dovuto vedermela con JodaTime oggi, e mi aspettavo questo test per passare:Perché la conversione di un Date Date Joda in Calendar e viceversa modifica il campo centuryOfEra e nient'altro?
@Test
public void dateTimeShouldRoundTrip() {
DateTime originalDateTime = new DateTime(2013, 7, 4, 0, 0);
DateTime roundTrip = new DateTime(originalDateTime.toGregorianCalendar());
assertThat(roundTrip, is(originalDateTime));
}
ma fallisce. L'ho controllato con JodaTime 2.1 e 2.2.
ulteriori controlli (utilizzando il SamePropertyValuesAs matcher) mostra che il guasto è causato da una differenza nella proprietà centuryOfEra
:
originalDateTime.getCenturyOfEra(); // 20
roundTrip.getCenturyOfEra(); // 21
Allora perchè il questo cambiamento proprietà, quando tutto il resto - anno, mese, giorno, giorno della settimana, fuso orario, ecc. - no? è un insetto? Non dovresti essere in grado di effettuare il roundtrip di un DateTime su un calendario e di tornare indietro?