Изменить ниже с резюме ответа:
Я пытаюсь немного больше понять о java.time.Instant и дополнительных секундах. Если я запускаю это:
System.out.println(Instant.ofEpochSecond(60*60*24*365*50));
Я рассчитывал создать дату/время, близкие к началу 2020 года, то есть 50 лотов по 365 дней после 1 января 1970 года, так что с учетом нескольких високосных лет на несколько дней меньше. Я действительно получаю такую дату. Все идет нормально.
Дата/время, которые я получаю, отображаются как 2019-12-20T00:00:00Z
. Что меня удивило, так это то, что я думал, что результат также будет на несколько секунд меньше полуночи из-за високосных секунд. Но сейчас ровно полночь по Гринвичу.
Я неправильно понимаю високосные секунды или java.time.Instant (или, возможно, что-то совсем другое!)?
РЕДАКТИРОВАТЬ: как отметили комментаторы, время Java не требуется для каких-либо действий с дополнительными секундами, вероятно, потому, что время Unix их игнорирует, и причина этого указана в статье Википедии и косвенно через другой вопрос. Суть в том, что будущие високосные секунды непредсказуемы, но добавляются, когда астрономы соглашаются, что Земля замедлилась достаточно, чтобы это оправдать. И кажется, что это замедление непредсказуемо.
Обратите внимание: я не удалил свой вопрос, поскольку связь между временем Unix и временем java не упоминается в вопросе, на который ссылались другие, поэтому я считаю, что это добавляет некоторые небольшие достоинства.
Спасибо за отзыв!
java.time
Oracle не хочет его реализовывать и удалил данные из дистрибутива tzdb . - person Meno Hochschild   schedule 18.02.2021