Константа OFFSET_SECONDS

Константа OFFSET_SECONDS класса ChronoField представляет смещение временной зоны в секундах относительно UTC (Coordinated Universal Time). Это поле используется для получения и установки смещения зоны в объектах временных типов, поддерживающих временные зоны, таких как ZonedDateTime и OffsetDateTime.

Импорт

kotlinimport java.time.temporal.ChronoField

Синтаксис

kotlinChronoField.OFFSET_SECONDS

Пример

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

kotlinimport java.time.ZonedDateTime
import java.time.temporal.ChronoField

val zonedDateTime = ZonedDateTime.now()
val offsetSeconds = zonedDateTime.get(ChronoField.OFFSET_SECONDS)

println("Offset in seconds: $offsetSeconds")

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

kotlinString "Offset in seconds: 10800"

Пример

Преобразуем смещение из секунд в часы и минуты:

kotlinimport java.time.ZoneOffset

val totalSeconds = 10800
val zoneOffset = ZoneOffset.ofTotalSeconds(totalSeconds)
val hours = totalSeconds / 3600
val minutes = (totalSeconds % 3600) / 60

println("Offset: $hours hours, $minutes minutes")
println("ZoneOffset: $zoneOffset")

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

kotlinString "Offset: 3 hours, 0 minutes"
String "ZoneOffset: +03:00"

Пример

Используем OFFSET_SECONDS с объектом OffsetDateTime:

kotlinimport java.time.OffsetDateTime
import java.time.ZoneOffset
import java.time.temporal.ChronoField

val offsetDateTime = OffsetDateTime.now()
val offsetSeconds = offsetDateTime.get(ChronoField.OFFSET_SECONDS)
val zoneOffset = ZoneOffset.ofTotalSeconds(offsetSeconds)

println("Current offset: $zoneOffset")

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

kotlinString "Current offset: +03:00"

Пример

Проверим, поддерживает ли временной объект поле OFFSET_SECONDS:

kotlinimport java.time.LocalDateTime
import java.time.OffsetDateTime
import java.time.temporal.ChronoField

val offsetDateTime = OffsetDateTime.now()
val localDateTime = LocalDateTime.now()

val supportsOffset1 = offsetDateTime.isSupported(ChronoField.OFFSET_SECONDS)
val supportsOffset2 = localDateTime.isSupported(ChronoField.OFFSET_SECONDS)

println("OffsetDateTime supports OFFSET_SECONDS: $supportsOffset1")
println("LocalDateTime supports OFFSET_SECONDS: $supportsOffset2")

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

kotlinString "OffsetDateTime supports OFFSET_SECONDS: true"
String "LocalDateTime supports OFFSET_SECONDS: false"

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

  • класс ZoneOffset,
    который представляет смещение временной зоны
  • класс ZonedDateTime,
    который представляет дату и время с временной зоной
  • класс OffsetDateTime,
    который представляет дату и время со смещением
  • константу INSTANT_SECONDS класса ChronoField,
    которая представляет мгновенное время в секундах