Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗jvSpDtInr 150 of 322 menu
◀ ▶

Введение в продвинутую работу с датой и временем в Java

В базовом разделе про java.time уже встречались LocalDate, LocalTime и LocalDateTime. Они описывают календарь и часы без привязки к региону. Так удобно хранить день рождения или расписание в одном городе.

Когда данные уходят на сервер, в лог или в базу для разных стран, одной локальной отметки мало. Нужен универсальный момент на шкале UTC и явный часовой пояс, чтобы восстановить местное время у получателя.

В этом разделе соберем продвинутую часть пакета java.time для Java 27. Разберем момент Instant, точную Duration и календарный Period, идентификатор ZoneId и полную отметку ZonedDateTime, перевод между поясами, запись и чтение строк.

Объекты по-прежнему неизменяемы: любой сдвиг или смена пояса возвращает новое значение. Старые типы Date и Calendar в новом коде не используем.

Короткая карта типов для ориентира:

import java.time.Instant; import java.time.LocalDate; import java.time.ZoneId; import java.time.ZonedDateTime; public class Main { public static void main(String[] args) { Instant now = Instant.now(); LocalDate day = now.atZone(ZoneId.systemDefault()).toLocalDate(); ZonedDateTime zoned = ZonedDateTime.now(ZoneId.of("UTC")); System.out.println(now); System.out.println(day); System.out.println(zoned); } }

Первая строка - секунды с эпохи без календарной привязки. Вторая - только дата в системном поясе. Третья - полная отметка с указанием UTC. Дальше разберем каждый слой подробнее.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить