Стажировка
Открыта запись на бесплатный пробный месяц! Жми для подробностей! →
823 of 1310 menu
Бесплатный курс по Верстке. От новичка до продвинутого верстальщика! Мы уже начали, но можно присоединится! Жми для записи!

ZonedDateTime

Класс ZonedDateTime представляет дату и время с информацией о часовом поясе и смещении от UTC. Это неизменяемый класс, который комбинирует LocalDateTime и ZoneId, позволяя работать с временными зонами и учитывать летнее время.

Импорт

import java.time.ZonedDateTime import java.time.ZoneId

Синтаксис создания

fun now(): ZonedDateTime
fun now(zone: ZoneId): ZonedDateTime
fun of(year: Int, month: Int, day: Int, hour: Int, minute: Int, second: Int, nanoOfSecond: Int, zone: ZoneId): ZonedDateTime
fun of(localDateTime: LocalDateTime, zone: ZoneId): ZonedDateTime
fun parse(text: CharSequence): ZonedDateTime
fun parse(text: CharSequence, formatter: DateTimeFormatter): ZonedDateTime

Пример

Создадим объект ZonedDateTime с текущей датой и временем в системном часовом поясе:

val now = ZonedDateTime.now() println(now)

Результат выполнения кода:

String "2025-09-11T14:30:45.123+03:00[Europe/Moscow]"

Пример

Создадим объект ZonedDateTime для конкретной даты и времени в указанном часовом поясе:

val dateTime = ZonedDateTime.of(2025, 12, 31, 23, 59, 45, 0, ZoneId.of("America/New_York")) println(dateTime)

Результат выполнения кода:

String "2025-12-31T23:59:45-05:00[America/New_York]"

Пример

Распарсим строку в формате ISO-8601 в объект ZonedDateTime:

val parsed = ZonedDateTime.parse("2025-07-15T10:30:00+02:00[Europe/Paris]") println(parsed)

Результат выполнения кода:

String "2025-07-15T10:30:00+02:00[Europe/Paris]"

Пример

Получим компоненты даты и времени из объекта ZonedDateTime:

val zdt = ZonedDateTime.parse("2025-03-20T15:45:30-08:00[America/Los_Angeles]") val year = zdt.year val month = zdt.monthValue val day = zdt.dayOfMonth val hour = zdt.hour val minute = zdt.minute val zone = zdt.zone println("Year: $year, Month: $month, Day: $day, Time: $hour:$minute, Zone: $zone")

Результат выполнения кода:

String "Year: 2025, Month: 3, Day: 20, Time: 15:45, Zone: America/Los_Angeles"

Пример

Конвертируем ZonedDateTime в другой часовой пояс:

val nyTime = ZonedDateTime.parse("2025-12-31T20:00:00-05:00[America/New_York]") val tokyoTime = nyTime.withZoneSameInstant(ZoneId.of("Asia/Tokyo")) println(tokyoTime)

Результат выполнения кода:

String "2026-01-01T10:00:00+09:00[Asia/Tokyo]"

Смотрите также

  • класс LocalDateTime,
    который представляет дату и время без информации о часовом поясе
  • класс ZoneId,
    который представляет идентификатор часового пояса
  • класс OffsetDateTime,
    который представляет дату и время со смещением от UTC
  • метод parse класса ZonedDateTime,
    который преобразует строку в объект ZonedDateTime