Spec-Zone.ru › Kotlin 2

parseOrNull

kotlin-stdlib/kotlin.time/Instant/Companion/parseOrNull

Начиная с 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:00Z

  • 2020-08-30T18:43:00.50Z

  • 2020-08-30T18:43:00.123456789Z

  • 2020-08-30T18:40:00+03:00

  • 2020-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, поэтому его разбор завершится ошибкой.

См. также

Instant.parse

версию этой функции, которая при ошибке выбрасывает исключение.

Instant.toString

для форматирования.

Примеры

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

Spec-Zone.ru

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