Я получаю разные значения в миллисекундах за одну и ту же дату в прошлом при использовании JodaTime lib и java.util.Calendar.Например, для первого года AD
void test() {
int year = 1;
DateTime dt = new DateTime(year, 1,1,0,0,0,0);
dt = dt.toDateTime(GregorianChronology.getInstance());
Calendar cal = Calendar.getInstance();
cal.clear();
cal.set(year, 0, 1, 0, 0, 0);
DateTime endDate = new DateTime(cal.getTimeInMillis());
endDate = endDate.toDateTime(GregorianChronology.getInstance());
System.out.println("JodaTime: " + dt);
System.out.println("JodaTime, ms: " + dt.getMillis());
System.out.println("Calendar: " + cal.getTime());
System.out.println("Calendar, ms: " + cal.getTimeInMillis());
System.out.println("JodaTime by Calendar: " + endDate);
}
По умолчанию DateTime использует ISOChronology, а Calendar - GregorianCalendar (кроме локалей TH и JA).Поэтому я установил GregorianChronology, но ничего не изменилось.Результат выполнения -
JodaTime: 0001-01-01T00:00:00.000+01:34:52
JodaTime, ms: -62135602492000
Calendar: Sat Jan 01 00:00:00 EET 1
Calendar, ms: -62135776800000
JodaTime by Calendar: 0000-12-29T23:34:52.000+01:34:52
Может кто-нибудь подсказать, что я не так с чем-то?