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

Локальное время с привязкой к поясу в Java

ZonedDateTime объединяет дату, время и ZoneId. Так хранят момент, когда важно и местное время на стенах, и правило смещения для этого региона. Значение неизменяемо, как у остальных типов java.time.

Текущую отметку в поясе берут now. Фиксированную дату и часы задают через of:

import java.time.ZoneId; import java.time.ZonedDateTime; public class Main { public static void main(String[] args) { ZoneId utc = ZoneId.of("UTC"); ZonedDateTime live = ZonedDateTime.now(utc); ZonedDateTime fixed = ZonedDateTime.of( 2024, 12, 31, 23, 59, 59, 0, utc ); System.out.println(live); System.out.println(fixed); } }

Из зонированной отметки получают toLocalDate, toLocalTime, toLocalDateTime и toInstant. Последний шаг переводит на шкалу UTC с учетом смещения:

import java.time.Instant; import java.time.ZoneId; import java.time.ZonedDateTime; public class Main { public static void main(String[] args) { ZonedDateTime meet = ZonedDateTime.of( 2024, 6, 1, 18, 0, 0, 0, ZoneId.of("Europe/Berlin") ); Instant point = meet.toInstant(); System.out.println(point); } }

Сдвиг на Duration или Period работает как у LocalDateTime, но зона сохраняется в результате. При неоднозначных переходах DST библиотека выбирает согласованное правило.

Создайте отметку 2024-07-04 12:00 в зоне America/New_York и выведите ее в ISO-формате.

Переведите текущий ZonedDateTime в системной зоне в Instant и выведите epoch в секундах.

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