OffsetDateTime

Класс OffsetDateTime представляет дату и время со смещением от UTC/Greenwich. Он хранит все поля даты и времени с точностью до наносекунды, а также смещение от UTC/Greenwich. Этот класс полезен для представления точных моментов времени с учетом часового пояса.

Импорт

kotlinimport java.time.OffsetDateTime
import java.time.ZoneOffset
import java.time.format.DateTimeFormatter

Синтаксис

kotlin// Создание текущей даты и времени со смещением
fun now(): OffsetDateTime

// Создание из компонентов даты, времени и смещения
fun of(year: Int, month: Int, dayOfMonth: Int, hour: Int, minute: Int, second: Int, nanoOfSecond: Int, offset: ZoneOffset): OffsetDateTime

// Парсинг из строки
fun parse(text: CharSequence): OffsetDateTime
fun parse(text: CharSequence, formatter: DateTimeFormatter): OffsetDateTime

Пример

Создание текущей даты и времени со смещением:

kotlinval currentDateTime = OffsetDateTime.now()
println(currentDateTime)

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

kotlinString "2025-01-01T12:30:45.123456789+03:00"

Пример

Создание конкретной даты и времени со смещением:

kotlinval offset = ZoneOffset.ofHours(3)
val dateTime = OffsetDateTime.of(2025, 12, 31, 15, 30, 45, 0, offset)
println(dateTime)

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

kotlinString "2025-12-31T15:30:45+03:00"

Пример

Парсинг строки в формате ISO-8601:

kotlinval dateTimeStr = "2025-07-15T10:30:45+02:00"
val dateTime = OffsetDateTime.parse(dateTimeStr)
println(dateTime)

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

kotlinString "2025-07-15T10:30:45+02:00"

Пример

Получение отдельных компонентов даты и времени:

kotlinval dateTime = OffsetDateTime.parse("2025-03-20T14:25:30+03:00")

val year = dateTime.year
val month = dateTime.monthValue
val day = dateTime.dayOfMonth
val hour = dateTime.hour
val minute = dateTime.minute
val offset = dateTime.offset

println("Year: $year, Month: $month, Day: $day")
println("Hour: $hour, Minute: $minute")
println("Offset: $offset")

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

kotlinString "Year: 2025, Month: 3, Day: 20"
String "Hour: 14, Minute: 25"
String "Offset: +03:00"

Пример

Преобразование в LocalDateTime и LocalDate:

kotlinval offsetDateTime = OffsetDateTime.parse("2025-08-10T18:45:30-05:00")

val localDateTime = offsetDateTime.toLocalDateTime()
val localDate = offsetDateTime.toLocalDate()

println("LocalDateTime: $localDateTime")
println("LocalDate: $localDate")

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

kotlinString "LocalDateTime: 2025-08-10T18:45:30"
String "LocalDate: 2025-08-10"

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

  • класс LocalDateTime,
    который представляет дату и время без смещения
  • класс ZonedDateTime,
    который представляет дату и время с информацией о часовом поясе
  • класс ZoneOffset,
    который представляет смещение от UTC/Greenwich
  • класс DateTimeFormatter,
    который используется для форматирования и парсинга дат