Класс OffsetTime

Класс OffsetTime представляет время со смещением от UTC/Greenwich в формате часы-минуты-секунды-наносекунды со смещением. Он хранит время и смещение от UTC, что позволяет точно определять момент времени без привязки к конкретной временной зоне.

Импорт

kotlinimport java.time.OffsetTime
import java.time.ZoneOffset

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

kotlinfun of(hour: Int, minute: Int, second: Int, nanoOfSecond: Int, offset: ZoneOffset): OffsetTime
kotlinfun of(time: LocalTime, offset: ZoneOffset): OffsetTime
kotlinfun parse(text: CharSequence): OffsetTime
kotlinfun parse(text: CharSequence, formatter: DateTimeFormatter): OffsetTime
kotlinfun now(): OffsetTime

Пример

Создадим время со смещением "15:30:45+03:00":

kotlinval offsetTime = OffsetTime.of(15, 30, 45, 0, ZoneOffset.ofHours(3))
println(offsetTime)

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

kotlinString "15:30:45+03:00"

Пример

Создадим время со смещением из объекта LocalTime:

kotlinimport java.time.LocalTime

val localTime = LocalTime.of(10, 15, 30)
val offsetTime = OffsetTime.of(localTime, ZoneOffset.ofHours(2))
println(offsetTime)

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

kotlinString "10:15:30+02:00"

Пример

Получим текущее время со смещением:

kotlinval currentOffsetTime = OffsetTime.now()
println(currentOffsetTime)

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

kotlinString "14:25:36.123+03:00"

Пример

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

kotlinval parsedTime = OffsetTime.parse("08:45:30+01:00")
println(parsedTime)

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

kotlinString "08:45:30+01:00"

Пример

Получим компоненты времени и смещение:

kotlinval offsetTime = OffsetTime.parse("23:15:45.123-05:00")

val hour = offsetTime.hour
val minute = offsetTime.minute
val second = offsetTime.second
val nano = offsetTime.nano
val offset = offsetTime.offset

println("Hour: $hour, Minute: $minute, Second: $second, Nano: $nano, Offset: $offset")

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

kotlinString "Hour: 23, Minute: 15, Second: 45, Nano: 123000000, Offset: -05:00"

Пример

Сравним два времени со смещением:

kotlinval time1 = OffsetTime.parse("10:00:00+02:00")
val time2 = OffsetTime.parse("09:00:00+01:00")

val isBefore = time1.isBefore(time2)
val isAfter = time1.isAfter(time2)
val isEqual = time1.isEqual(time2)

println("Is before: $isBefore, Is after: $isAfter, Is equal: $isEqual")

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

kotlinString "Is before: false, Is after: true, Is equal: false"

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

  • класс LocalTime,
    который представляет время без смещения
  • класс ZoneOffset,
    который представляет смещение от UTC
  • класс OffsetDateTime,
    который представляет дату и время со смещением
  • класс ZonedDateTime,
    который представляет дату и время с временной зоной