@glorfindeil

Почему при переконвертации java.util.Date в Instant полученные значения сильно различаются?

log.debug("Date is " + date);
           Instant instant = date.toInstant();
           log.debug("Instant date is " + instant);
           LocalDateTime localTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());


2016-05-25-15:57:16.729 DEBUG|G|r.r.c.s.d.DocGeneratorService|Date is Mon Dec 12 00:00:00 MSK 1222
2016-05-25-15:57:16.730 DEBUG|G|r.r.c.s.d.DocGeneratorService|Instant date is 1222-12-18T21:00:00Z
2016-05-25-15:57:16.734 DEBUG|G|r.r.c.s.d.DocGeneratorService|Local date is 1222-12-18T21:00:00Z

Разница на целых 6 дней!

Почему так происходит? Это баг или фича? Кто-нибудь объяснит?
  • Вопрос задан
  • 415 просмотров
Решения вопроса 1
@akileev
Java / Scala developer
Это из-за разницы между юлианским и григорианским календарем.

API дат из java.util.* до 14 октября 1582 года использует юлианский календарь, а после григорианский.

API из java.time.* использует пролептический григорианский календарь.

И в указанные даты как раз была разница в 8 дней между юлианским и пролептическим григорианским календарем.

https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы