То, как я получаю дату от Elasticsearch, - в миллисекундах (это то, как оно читает из индекса lucene. Рассмотрим это как ограничение).
Я бы переосмыслил необходимостьиз ограничений, которые вы упоминаете.Кто навязывает это и почему?
Работа с моментами в миллисекундах с или до эпохи Unix приемлема для моментов времени после (примерно) 1950 года, но вы настраиваете себя намножество проблем путем преобразования исторических дат шестнадцатого века в миллисекунды;включая, но не ограничиваясь, выяснение, какой часовой пояс использовать, и как убедиться, что один и тот же часовой пояс используется как на стороне, которая преобразует ваши даты в миллисекунды, так и на стороне, которая преобразует их обратно в даты.Как ElasticSearch преобразует вашу дату в метку времени в миллисекундах?
Существует также очень реальный риск того, что используемый вами программный стек никогда не тестировался с историческими датами в полях, подобных меткам времени, предназначенных для последних и текущих моментов времени.
Если вам нужен промежуточный формат для передачи этих дат, используйте календарные даты ISO 8601 в строковой нотации YYYY-MM-DD
из YYYYMMDD
.По крайней мере, это означает, что их сортировка работает «из коробки».
Для работы с историческими датами в Java начните с java.time
пакета , представленного в Java 8 (как упомянуто @sharon-ben-ашер).