Why does this test fail:
DateTime dateTime = new DateTime(1997,01,01,00,00,00,00, DateTimeZone.UTC);
long jodaMills = dateTime.getMillis();
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
cal.set(1997,01,01,00,00,00);
long calMills = cal.getTimeInMillis();
Assert.assertEquals(jodaMills, calMills);
I get a result of:
Expected :852076800000
Actual :854755200964
Shouldn’t they be the same number?
Two reasons:
Joda has one based months. So you need to change that.
Calendar is poorly designed. You are not setting the milliseconds of the second to 0.
cal.set(MILLISECOND, 0)Here is the javadoc
Which is missing the millisecond field.