parse Or Null
Начиная с Kotlin: 2.3
fun parseOrNull(input: CharSequence): Instant?
Разбирает строку в формате ISO 8601, представляющую момент времени (например, 2020-08-30T18:43:00Z), или возвращает null, если строку невозможно разобрать или она выходит за границы Instant.
Гарантированно разбирает все строки, которые формирует Instant.toString.
Примеры моментов времени в формате ISO 8601:
2020-08-30T18:43:00Z2020-08-30T18:43:00.50Z2020-08-30T18:43:00.123456789Z2020-08-30T18:40:00+03:002020-08-30T18:40:00+03:30:20
2020-01-01T23:59:59.123456789+01+12020-01-31T23:59:59Z
См. ISO-8601-1:2019, 5.4.2.1b), за исключением формата без смещения.
Считается, что строка представляет время по шкале UTC-SLS, а не UTC. На практике это означает, что даже если в указанный день есть дополнительная секунда, она не повлияет на разбор времени, даже если время приходится на последние 1000 секунд дня. И наоборот, даже если в указанный день есть отрицательная дополнительная секунда, 23:59:59 всё равно считается допустимым временем. 23:59:60 недопустимо в UTC-SLS, поэтому его разбор завершится ошибкой.
См. также
версию этой функции, которая при ошибке выбрасывает исключение.
для форматирования.
Примеры
import kotlin.test.*
import kotlin.time.*
import kotlin.time.Duration.Companion.hours
import kotlin.time.Duration.Companion.nanoseconds
import kotlin.time.Duration.Companion.seconds
fun main() {
//sampleStart
// Parsing a string that represents the Unix epoch.
val unixEpochInstant = Instant.parseOrNull("1970-01-01T00:00:00Z")
println(unixEpochInstant?.epochSeconds) // 0
// Parsing an ISO 8601 string with a time zone offset.
val instant = Instant.parseOrNull("2020-08-30T18:40:00+03:00")
// Instants are presented in the UTC time zone when converted to string.
println(instant.toString()) // 2020-08-30T15:40:00Z
// Failing to parse an invalid string returns null.
println(Instant.parseOrNull("Ten o'clock today")) // null
println(Instant.parseOrNull("2020-08-32T15:40:00Z")) // null
println(Instant.parseOrNull("+10000000000000-08-01T15:40:00Z")) // null
//sampleEnd
}
© 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/-instant/-companion/parse-or-null.html