Класс Clock
Класс Clock из пакета java.time предоставляет доступ к текущему моменту времени и позволяет работать с различными временными зонами.
С помощью этого класса можно получать текущее время, создавать фиксированные часы для тестирования, а также работать со смещениями времени.
Импорт
import java.time.Clock
import java.time.ZoneId
Синтаксис
// Получение часов системной зоны по умолчанию
fun systemDefaultZone(): Clock
// Получение часов UTC
fun systemUTC(): Clock
// Получение часов для указанной зоны
fun system(zone: ZoneId): Clock
// Создание фиксированных часов
fun fixed(fixedInstant: Instant, zone: ZoneId): Clock
// Создание часов со смещением
fun offset(baseClock: Clock, offsetDuration: Duration): Clock
// Получение текущего момента
fun instant(): Instant
// Получение временной зоны
fun getZone(): ZoneId
// Создание копии часов с другой зоной
fun withZone(zone: ZoneId): Clock
Пример
Получение текущего времени с использованием системной зоны по умолчанию:
val clock = Clock.systemDefaultZone()
val instant = clock.instant()
println("Current time: $instant")
Результат выполнения кода:
String "Current time: 2025-01-15T10:30:45.123Z"
Пример
Получение текущего времени в UTC:
val clock = Clock.systemUTC()
val instant = clock.instant()
println("UTC time: $instant")
Результат выполнения кода:
String "UTC time: 2025-01-15T10:30:45.123Z"
Пример
Создание фиксированных часов для тестирования:
val fixedInstant = Instant.parse("2025-12-31T23:59:59Z")
val clock = Clock.fixed(fixedInstant, ZoneId.systemDefault())
val instant = clock.instant()
println("Fixed time: $instant")
Результат выполнения кода:
String "Fixed time: 2025-12-31T23:59:59Z"
Пример
Создание часов со смещением на 2 часа вперед:
val baseClock = Clock.systemUTC()
val offsetClock = Clock.offset(baseClock, Duration.ofHours(2))
val instant = offsetClock.instant()
println("Offset time: $instant")
Результат выполнения кода:
String "Offset time: 2025-01-15T12:30:45.123Z"
Пример
Использование часов с конкретной временной зоной:
val tokyoZone = ZoneId.of("Asia/Tokyo")
val clock = Clock.system(tokyoZone)
val instant = clock.instant()
val zone = clock.getZone()
println("Time in $zone: $instant")
Результат выполнения кода:
String "Time in Asia/Tokyo: 2025-01-15T19:30:45.123Z"