Метод normalized

Метод normalized класса ZoneId проверяет, является ли текущий объект ZoneOffset и, если это так, возвращает его. Если объект не является ZoneOffset, метод возвращает его без изменений. Этот метод полезен, когда необходимо гарантировать, что ZoneId может быть безопасно использован в APIs, требующих ZoneOffset.

Импорт

kotlinimport java.time.ZoneId
import java.time.ZoneOffset

Синтаксис

kotlinfun normalized(): ZoneId

Пример

Нормализуем ZoneOffset UTC:

kotlinval zoneOffset = ZoneOffset.UTC
val normalizedZone = zoneOffset.normalized()
println(normalizedZone)

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

kotlinString "Z"

Пример

Нормализуем обычный ZoneId (не ZoneOffset):

kotlinval zoneId = ZoneId.of("Europe/London")
val normalizedZone = zoneId.normalized()
println(normalizedZone)

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

kotlinString "Europe/London"

Пример

Сравним поведение normalized для разных типов ZoneId:

kotlinval offsetId = ZoneId.of("+02:00")
val regionId = ZoneId.of("Europe/Paris")

val normalizedOffset = offsetId.normalized()
val normalizedRegion = regionId.normalized()

println("Original offset: $offsetId, Normalized: $normalizedOffset")
println("Original region: $regionId, Normalized: $normalizedRegion")

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

kotlinString "Original offset: +02:00, Normalized: +02:00"
String "Original region: Europe/Paris, Normalized: Europe/Paris"

Пример

Проверим, что нормализованный ZoneOffset можно безопасно использовать в методах, требующих ZoneOffset:

kotlinval zoneId = ZoneId.of("+05:00")
val normalized = zoneId.normalized()

if (normalized is ZoneOffset) {
  val totalSeconds = normalized.totalSeconds
  println("Total seconds: $totalSeconds")
} else {
  println("Not a ZoneOffset")
}

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

kotlinString "Total seconds: 18000"

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

  • функцию of класса ZoneId,
    которая создает ZoneId из строкового идентификатора
  • функцию systemDefault класса ZoneId,
    которая возвращает системный часовой пояс по умолчанию
  • функцию of класса ZoneOffset,
    которая создает ZoneOffset из смещения
  • класс ZonedDateTime,
    который представляет дату и время с часовым поясом