Java.util.Date специальная дата 06.04.1980: неправильный часJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Java.util.Date специальная дата 06.04.1980: неправильный час

Сообщение Anonymous »

Мы столкнулись со следующей проблемой:

Код: Выделить всё

    SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy", java.util.Locale.GERMAN);
String dateInString = "06-04-1980";
Date date = formatter.parse(dateInString);
до: воскресенье, 6 апреля, 00:00:00 по центральноевропейскому летнему времени 1980 года
после: воскресенье, 6 апреля, 01:00:00 по центральноевропейскому летнему времени 1980 года
Другой пример:

Код: Выделить всё

Date date = Date.from(LocalDate.of(1980, 4, 6).atStartOfDay(ZoneId.systemDefault()).toInstant());
Столкнулась с той же проблемой.
Мы думали, что проблема заключается в смене java11 на java17, но это не так. Это была смена часового пояса с Европы/Берлина на Европу Вена. 6 апреля 1980 г. в Австрии было установлено летнее время, и переход часов произошел в 00:00. Таким образом, в этот день не было 00:00.
Воспроизводимый пример: изменение часового пояса на «Европа/Берлин» приводит к 0 часам.

Код: Выделить всё

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy");
for (LocalDate date = LocalDate.of(1500, 04, 01); date.isBefore(LocalDate.of(9999, 1, 1)); date = date.plusDays(1)) {
Date out = Date.from(date.atStartOfDay(ZoneId.of("Europe/Vienna")).toInstant());
Calendar cal = Calendar.getInstance();
cal.setTimeZone(TimeZone.getTimeZone(ZoneId.of("Europe/Vienna")));
cal.setTime(out);
if (cal.get(Calendar.HOUR_OF_DAY) > 0) {
System.out.println(date.format(formatter) + " > " + cal.get(Calendar.HOUR_OF_DAY));
}
}
System.out.println("done");
Все даты до 31 марта 1893 года имеют 23 часа в часовом поясе «Европа/Вена», в «Европа/Берлин» также 0.

Подробнее здесь: https://stackoverflow.com/questions/733 ... wrong-hour
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»