Есть что-то особенное в дате 3 апреля 1942 года?По какой-то причине час 0 (12:00) является недопустимым для этой конкретной даты.Дата принимается, когда используется снисходительный календарь, но время суток увеличивается до 1 (1:00 утра).
Соответствующий код
java.util.Calendar calendar = java.util.Calendar.getInstance(
java.util.TimeZone.getTimeZone("Europe/Helsinki")
);
calendar.clear();
calendar.setLenient(false);
calendar.set(1942, 3, 3, 0, 0, 0);
calendar.getTimeInMillis();
Исключение
java.lang.IllegalArgumentException: HOUR_OF_DAY
at java.util.GregorianCalendar.computeTime(Unknown Source)
at java.util.Calendar.updateTime(Unknown Source)
at java.util.Calendar.getTimeInMillis(Unknown Source)
Я бы действительно предпочел, чтобы даты не были мягкими, поскольку я не хочу принимать невозможные даты.1009 *
- правка
Как указано в принятом ответе и во многих комментариях, это действительно относится к переходу на летнее время.3 апреля 1942 года в 00:00 летнее время было проверено в часовом поясе EEST / Хельсинки.В настоящее время летнее время используется с 1981 года, а часы идут с 03:00 вместо 00:00.Это означает, что, например, 28 марта 2010 года 03:00 не существует в java.util.Calendar.
Мне просто нужно создать специальный случай для этой конкретной даты в моем коде.