Когда я устанавливаю месяц на дату, представляющую 1/1/1970, а затем сразу возвращаю месяц назад, он отключается на один.
import java.util.Date;
@Test
public void monthShouldBeExpectedValue() {
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date(0));
int expectedMonth = Calendar.JUNE;
calendar.set(Calendar.MONTH, expectedMonth);
int actualMonth = calendar.get(Calendar.MONTH);
assertThat(actualMonth, equalTo(expectedMonth)); // test fails: expected 5 got 6
}
Если я изменю эту строку
calendar.setTime(new Date(0));
к
calendar.setTime(new Date()); // use 'today' instead of 1/1/1970
то тест проходит. Кто-нибудь знает, почему?
Edit
Печатная версия дат:
new Date(0): Wed Dec 31 19:00:00 EST 1969
date from calendar: Tue Jul 01 19:00:00 EDT 1969
Я запускаю старый JDK: 1.6.0_30-b12 (64 бит)
Я в восточном стандартном времени.