Я нашел этот код, когда искал проблему:
Код: Выделить всё
Date date = new SimpleDateFormat("dd.MM.yyyy").parse("01.01.0001");
date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
Код: Выделить всё
date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
Код: Выделить всё
29.12.0000
- Почему фактический результат отличается от ожидаемого?
- Что мне делать, если я также хочу получить LocalDate со значением 01.01.0001?
Код: Выделить всё
ZoneId.systemDefault()
- Думаю, проблема в этом шаге : date.toInstant()
- Я не думаю, что это (только) проблема с часовым поясом. Если я протестирую его с другим годом. Например 1901, тогда он заканчивается 31.12.1900.
Код: Выделить всё
Date date0001 = new SimpleDateFormat("dd.MM.yyyy").parse("01.01.0001");
System.out.println(date0001.toInstant());
Код: Выделить всё
Date date1901 = new SimpleDateFormat("dd.MM.yyyy").parse("01.01.1901");
System.out.println(date1901.toInstant());
Подробнее здесь: https://stackoverflow.com/questions/774 ... 29-12-0000