Класс Instant
Класс Instant представляет момент времени на временной шкале UTC с наносекундной точностью.
Этот класс используется для представления временных меток, которые не зависят от часовых поясов и календарных систем.
Момент времени хранится в виде количества секунд и наносекунд, прошедших с эпохи Unix (1 января 1970 года, 00:00:00 UTC).
Импорт
import java.time.Instant
Синтаксис создания
// Текущий момент времени
fun now(): Instant
// Из секунд с эпохи Unix
fun ofEpochSecond(epochSecond: Long): Instant
// Из секунд и наносекунд с эпохи Unix
fun ofEpochSecond(epochSecond: Long, nanoAdjustment: Long): Instant
// Из миллисекунд с эпохи Unix
fun ofEpochMilli(epochMilli: Long): Instant
// Парсинг из строки ISO-8601
fun parse(text: CharSequence): Instant
Пример
Получим текущий момент времени:
val instant = Instant.now()
println(instant)
Результат выполнения кода:
String "2025-01-15T10:30:45.123Z"
Пример
Создадим момент времени из секунд с эпохи Unix:
val instant = Instant.ofEpochSecond(1736857845)
println(instant)
Результат выполнения кода:
String "2025-01-15T10:30:45Z"
Пример
Создадим момент времени из миллисекунд с эпохи Unix:
val instant = Instant.ofEpochMilli(1736857845123)
println(instant)
Результат выполнения кода:
String "2025-01-15T10:30:45.123Z"
Пример
Парсинг момента времени из строки формата ISO-8601:
val instant = Instant.parse("2025-01-15T10:30:45.123Z")
println(instant)
Результат выполнения кода:
String "2025-01-15T10:30:45.123Z"
Синтаксис методов
// Получение компонентов времени
fun getEpochSecond(): Long
fun getNano(): Int
// Арифметические операции
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
// Сравнение моментов времени
fun isBefore(other: Instant): Boolean
fun isAfter(other: Instant): Boolean
fun compareTo(other: Instant): Int
// Преобразование в миллисекунды
fun toEpochMilli(): Long
Пример
Получим компоненты момента времени:
val instant = Instant.parse("2025-01-15T10:30:45.123456789Z")
val seconds = instant.epochSecond
val nanos = instant.nano
println("Seconds: $seconds, Nanos: $nanos")
Результат выполнения кода:
String "Seconds: 1736857845, Nanos: 123456789"
Пример
Добавим интервал времени к моменту:
val instant = Instant.parse("2025-01-15T10:30:45Z")
val later = instant.plusSeconds(3600) // Добавляем 1 час
println(later)
Результат выполнения кода:
String "2025-01-15T11:30:45Z"
Пример
Сравним два момента времени:
val 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")
Результат выполнения кода:
String "Is before: true, Is after: false"
Пример
Преобразуем момент времени в миллисекунды:
val instant = Instant.parse("2025-01-15T10:30:45.123Z")
val millis = instant.toEpochMilli()
println(millis)
Результат выполнения кода:
Long 1736857845123
Смотрите также
-
функцию
nowклассаInstant,
которая возвращает текущий момент времени -
функцию
ofEpochSecondклассаInstant,
которая создает момент времени из секунд с эпохи Unix -
функцию
parseклассаInstant,
которая парсит момент времени из строки -
класс
LocalDateTime,
который представляет дату и время без часового пояса