У меня проблемы с GregorianCalender Java 1.7. Я знаю переход на Java 8 или использование Joda может решить мою проблему, но, к сожалению, это не вариант.Java 1.7 GregorianCalendar вычисляет неверную дату
Итак, я пытаюсь добавить 365 дней для расчета даты окончания (может показаться глупым добавить 365 дней, а не просто добавить год, но это то, что мой клиент запросил, и даже после того, как он спросил его много раз, он хочет придерживаться с ним, потому что он хочет игнорировать високосные годы).
В целом все работает хорошо, но в следующем модульном тесте он терпит неудачу в его и моем ожидании. Я пересчитал его несколько раз и использовал различные инструменты для проверки моих результатов, но я просто не могу подтвердить вычисления Java.
Вот мой блок тест, который потерпит неудачу, потому что она возвращает неправильную дату:
@Test
public void test(){
// Get a Gregorian Calendar
Calendar cal = GregorianCalendar.getInstance();
// Remove whatever was stored previously
cal.clear();
// Set calendar to 2004-10-23
cal.set(2004, Calendar.OCTOBER, 23);
// Add 365 days
cal.add(Calendar.DAY_OF_YEAR, 365);
// Calendar should be at 2005-10-22 now
Assert.assertEquals(2005, cal.get(Calendar.YEAR));
Assert.assertEquals(Calendar.OCTOBER, cal.get(Calendar.MONTH));
Assert.assertEquals(22, cal.get(Calendar.DAY_OF_MONTH));
}
Он подведет с:
java.lang.AssertionError: expected:<22> but was:<23>
Я делаю что-то не так?