Класс Instant

Класс Instant представляет момент времени на временной шкале UTC с наносекундной точностью. Этот класс используется для представления временных меток, которые не зависят от часовых поясов и календарных систем. Момент времени хранится в виде количества секунд и наносекунд, прошедших с эпохи Unix (1 января 1970 года, 00:00:00 UTC).

Импорт

kotlinimport java.time.Instant

Синтаксис создания

kotlin// Текущий момент времени
fun now(): Instant
kotlin// Из секунд с эпохи Unix
fun ofEpochSecond(epochSecond: Long): Instant
kotlin// Из секунд и наносекунд с эпохи Unix
fun ofEpochSecond(epochSecond: Long, nanoAdjustment: Long): Instant
kotlin// Из миллисекунд с эпохи Unix
fun ofEpochMilli(epochMilli: Long): Instant
kotlin// Парсинг из строки ISO-8601
fun parse(text: CharSequence): Instant

Пример

Получим текущий момент времени:

kotlinval instant = Instant.now()
println(instant)

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

kotlinString "2025-01-15T10:30:45.123Z"

Пример

Создадим момент времени из секунд с эпохи Unix:

kotlinval instant = Instant.ofEpochSecond(1736857845)
println(instant)

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

kotlinString "2025-01-15T10:30:45Z"

Пример

Создадим момент времени из миллисекунд с эпохи Unix:

kotlinval instant = Instant.ofEpochMilli(1736857845123)
println(instant)

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

kotlinString "2025-01-15T10:30:45.123Z"

Пример

Парсинг момента времени из строки формата ISO-8601:

kotlinval instant = Instant.parse("2025-01-15T10:30:45.123Z")
println(instant)

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

kotlinString "2025-01-15T10:30:45.123Z"

Синтаксис методов

kotlin// Получение компонентов времени
fun getEpochSecond(): Long
fun getNano(): Int
kotlin// Арифметические операции
fun plusSeconds(secondsToAdd: Long): Instant
fun plusMillis(millisToAdd: Long): Instant
fun plusNanos(nanosToAdd: Long): Instant
fun minusSeconds(secondsToSubtract: Long): Instant
fun minusMillis(millisToSubtract: Long): Instant
fun minusNanos(nanosToSubtract: Long): Instant
kotlin// Сравнение моментов времени
fun isBefore(other: Instant): Boolean
fun isAfter(other: Instant): Boolean
fun compareTo(other: Instant): Int
kotlin// Преобразование в миллисекунды
fun toEpochMilli(): Long

Пример

Получим компоненты момента времени:

kotlinval instant = Instant.parse("2025-01-15T10:30:45.123456789Z")
val seconds = instant.epochSecond
val nanos = instant.nano

println("Seconds: $seconds, Nanos: $nanos")

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

kotlinString "Seconds: 1736857845, Nanos: 123456789"

Пример

Добавим интервал времени к моменту:

kotlinval instant = Instant.parse("2025-01-15T10:30:45Z")
val later = instant.plusSeconds(3600) // Добавляем 1 час

println(later)

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

kotlinString "2025-01-15T11:30:45Z"

Пример

Сравним два момента времени:

kotlinval instant1 = Instant.parse("2025-01-15T10:30:45Z")
val instant2 = Instant.parse("2025-01-15T11:30:45Z")

val isBefore = instant1.isBefore(instant2)
val isAfter = instant1.isAfter(instant2)

println("Is before: $isBefore, Is after: $isAfter")

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

kotlinString "Is before: true, Is after: false"

Пример

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

kotlinval instant = Instant.parse("2025-01-15T10:30:45.123Z")
val millis = instant.toEpochMilli()

println(millis)

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

kotlinLong 1736857845123

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

  • функцию now класса Instant,
    которая возвращает текущий момент времени
  • функцию ofEpochSecond класса Instant,
    которая создает момент времени из секунд с эпохи Unix
  • функцию parse класса Instant,
    которая парсит момент времени из строки
  • класс LocalDateTime,
    который представляет дату и время без часового пояса