Spec-Zone.ru › Kotlin 2

System

kotlin-stdlib/kotlin.time/Clock/System

Начиная с Kotlin: 2.3

object System : Clock

Экземпляр Clock, который использует в качестве источника сведений о времени системные часы, специфичные для платформы.

Последовательные вызовы now не обязательно будут возвращать возрастающие значения Instant, а если будут, увеличение этих значений не обязательно будет соответствовать прошедшему времени.

Например, при использовании Clock.System может произойти следующее:

  • now возвращает 2023-01-02T22:35:01Z.

  • Система обращается к Интернету и обнаруживает, что часы нужно скорректировать.

  • now возвращает 2023-01-02T22:32:05Z.

Если вам нужны предсказуемые интервалы между последовательными измерениями, рассмотрите возможность использования TimeSource.Monotonic.

Для упрощения тестирования не используйте Clock.System напрямую в реализации, а передавайте экземпляр Clock явно. Например:

Примеры

import kotlin.time.*
import kotlin.time.Duration.Companion.seconds

fun main() { 
   //sampleStart 
   // The current instant according to the system clock.
val currentInstant = Clock.System.now()
// The number of whole milliseconds that have passed since the Unix epoch.
println(currentInstant.toEpochMilliseconds()) 
   //sampleEnd
}
import kotlin.time.*
import kotlin.time.Duration.Companion.seconds

fun main() { 
   //sampleStart 
   fun formatCurrentTime(clock: Clock): String =
    clock.now().toString()

// In the production code:
val currentTimeInProduction = formatCurrentTime(Clock.System)
// Testing this value is tricky because it changes all the time.
println(currentTimeInProduction)

// In the test code:
val testClock = object : Clock {
    override fun now(): Instant = Instant.parse("2023-01-02T22:35:01Z")
}
// Then, one can write a completely deterministic test:
val currentTimeForTests = formatCurrentTime(testClock)
println(currentTimeForTests) // 2023-01-02T22:35:01Z 
   //sampleEnd
}

Функции

now

Начиная с Kotlin: 2.3

open override fun now(): Instant

Возвращает Instant, соответствующий текущему времени согласно этим часам.

© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.time/-clock/-system/index.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API