ZonedDateTime

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

Импорт

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

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

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

Пример

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

kotlinval now = ZonedDateTime.now()
println(now)

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

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

Пример

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

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

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

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

Пример

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

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

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

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

Пример

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

kotlinval 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")

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

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

Пример

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

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

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

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

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

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