Бесплатный вебинар
«как найти любимую работу»
Подарки на 150 000 ₽ за участие
Живой эфир
Записи не будет!
00:00:00:00
дн.ч.мин.сек.

Преобразование эпохи в миллисекундах в LocalDate в Java 8

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

Если желаете конвертировать миллисекунды времени Epoch в LocalDate в Java 8, следуйте инструкциям ниже:

  1. Инициализируйте объект Instant с использованием метода Instant.ofEpochMilli(), подав на вход миллисекунды.
  2. Преобразуйте Instant в объект ZonedDateTime, задав временную зону методом atZone().
  3. Извлеките LocalDate, активировав метод toLocalDate(). Вот корректный пример кода:
Java
Скопировать код
LocalDate date = Instant.ofEpochMilli(epochMillis).atZone(ZoneId.systemDefault()).toLocalDate();

С использованием этого метода вы сможете получить объект LocalDate, представляющий дату в системной временной зоне на основании заданного количества миллисекунд времени Epoch.

Кинга Идем в IT: пошаговый план для смены профессии

Подробное объяснение и советы

Работая с датами и временем в Java, очень важно обращать внимание на часовые пояса и разбираться в различиях между разными типами даты и времени.

Варианты обращения с часовыми поясами

Опираясь на ZoneId.systemDefault(), вы ориентируетесь на системный часовой пояс. Учтите, что:

  • Системный часовой пояс может меняться, отчего могут возникнуть расхождения в зависимости от настроек системы.
  • Чтобы обеспечить однозначность результата независимо от настроек системы, рекомендуется задавать временную зону явным образом.
Подробнее об этом расскажет наш спикер на видео
skypro youtube speaker

Когда может потребоваться LocalDateTime

LocalDate подходит для операций с датами, однако, если вам необходимо работать и со временем, лучше выбирать LocalDateTime, который поддерживает работу как с датой, так и с временем без учета временной зоны.

Различия между LocalDate и java.util.Date

Не путайте LocalDate с классом java.util.Date. LocalDate – это часть нового API для работы с датой и временем, введённого в Java 8. Он предназначен для использования только с датами. В свою очередь java.util.Date используется в старом API и предназначен для работы с датами, временем, а также временными зонами.

Определение числа дней с начала Эпохи Unix

Для определения количества дней с начала эпохи Unix используйте метод Duration.ofMillis(epochMillis).toDays(). Заметьте, что результат будет представлен в виде длительности, а не в виде LocalDate.

Преобразование Timestamp в LocalDateTime

Если у вас есть объект Timestamp, то для получения LocalDateTime воспользуйтесь следующим кодом:

Java
Скопировать код
LocalDateTime dateTime = new Timestamp(epochMillis).toLocalDateTime();

Так вы сможете конвертировать миллисекунды времени Epoch в объект LocalDateTime.

Визуализация

Markdown
Скопировать код
Миллисекунды времени Epoch: 1609502400000L

Этапы преобразования:
1. Создание объекта Instant: Instant.ofEpochMilli()         // "Мгновение времени"
2. Задание часового пояса: atZone(ZoneId.systemDefault()) // "Зона по умолчанию"
3. Получение LocalDate: toLocalDate()                        // "Только дата, без времени"

Результат: LocalDate 2021-01-01

Пошагово конвертируем миллисекунды времени Epoch в LocalDate.

Дополнительные указания и меры предосторожности

Учёт часового пояса при преобразовании

Для более точного контроля выборки используйте конкретный ZoneId вместо системного по умолчанию:

Java
Скопировать код
LocalDate date = Instant.ofEpochMilli(epochMillis).atZone(ZoneId.of("UTC")).toLocalDate();

Преобразование миллисекунд из времени Epoch без учета часового пояса

Если требуется непосредственное преобразование миллисекунд из времени Epoch в LocalDate без учёта временной зоны:

Java
Скопировать код
LocalDate epochDay = LocalDate.ofEpochDay(TimeUnit.MILLISECONDS.toDays(epochMillis));

При этом часовой пояс не будет учтён.

Особенности учета летнего времени и секунд

Будьте внимательны к особенностям использования летнего времени и каскадного изменения секунд. Правильный выбор ZoneId поможет корректно учитывать эти аспекты.

Полезные материалы

  1. java.time (Java SE 8) — Подробное руководство по API даты и времени Java 8.
  2. LocalDate (Java SE 8) — Детали класса LocalDate.
  3. Конвертер Epoch – Конвертер Unix Timestamp — Полезный инструмент для конвертации временных меток Epoch.
  4. Введение в Date/Time API Java 8 | Baeldung — Подробное руководство по использованию Date и Time API в Java 8.
  5. ZoneId (Java SE 8) — Руководство по работе с временными зонами.
  6. Instant (Java SE 8) — Описание работы с классом Instant и его синхронизации с временными отметками.
Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей
Какой метод используется для преобразования миллисекунд времени Epoch в объект Instant?
1 / 5