Класс OffsetTime
Класс OffsetTime представляет время со смещением от UTC/Greenwich в формате часы-минуты-секунды-наносекунды со смещением.
Он хранит время и смещение от UTC, что позволяет точно определять момент времени без привязки к конкретной временной зоне.
Импорт
import java.time.OffsetTime
import java.time.ZoneOffset
Синтаксис создания
fun of(hour: Int, minute: Int, second: Int, nanoOfSecond: Int, offset: ZoneOffset): OffsetTime
fun of(time: LocalTime, offset: ZoneOffset): OffsetTime
fun parse(text: CharSequence): OffsetTime
fun parse(text: CharSequence, formatter: DateTimeFormatter): OffsetTime
fun now(): OffsetTime
Пример
Создадим время со смещением "15:30:45+03:00":
val offsetTime = OffsetTime.of(15, 30, 45, 0, ZoneOffset.ofHours(3))
println(offsetTime)
Результат выполнения кода:
String "15:30:45+03:00"
Пример
Создадим время со смещением из объекта LocalTime:
import java.time.LocalTime
val localTime = LocalTime.of(10, 15, 30)
val offsetTime = OffsetTime.of(localTime, ZoneOffset.ofHours(2))
println(offsetTime)
Результат выполнения кода:
String "10:15:30+02:00"
Пример
Получим текущее время со смещением:
val currentOffsetTime = OffsetTime.now()
println(currentOffsetTime)
Результат выполнения кода:
String "14:25:36.123+03:00"
Пример
Парсинг строки в формате ISO-8601:
val parsedTime = OffsetTime.parse("08:45:30+01:00")
println(parsedTime)
Результат выполнения кода:
String "08:45:30+01:00"
Пример
Получим компоненты времени и смещение:
val 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")
Результат выполнения кода:
String "Hour: 23, Minute: 15, Second: 45, Nano: 123000000, Offset: -05:00"
Пример
Сравним два времени со смещением:
val 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")
Результат выполнения кода:
String "Is before: false, Is after: true, Is equal: false"
Смотрите также
-
класс
LocalTime,
который представляет время без смещения -
класс
ZoneOffset,
который представляет смещение от UTC -
класс
OffsetDateTime,
который представляет дату и время со смещением -
класс
ZonedDateTime,
который представляет дату и время с временной зоной