fromEpochSeconds
Returns an Instant that is the epochSeconds number of seconds from the epoch instant 1970-01-01T00:00:00Z
and the nanosecondAdjustment number of nanoseconds from the whole second.
The return value is clamped to the boundaries of Instant if the result exceeds them. In any case, it is guaranteed that instants between DISTANT_PAST and DISTANT_FUTURE can be represented.
fromEpochMilliseconds is a similar function for when input data only has millisecond precision.
Since Kotlin
2.1See also
Samples
import kotlin.test.*
import kotlin.time.*
import kotlin.time.Duration.Companion.hours
import kotlin.time.Duration.Companion.nanoseconds
fun main() {
//sampleStart
// Creating an Instant representing the Unix epoch.
val unixEpochInstant = Instant.fromEpochSeconds(0)
// Creating an Instant from a specific number of milliseconds and nanoseconds since the Unix epoch.
val instant = Instant.fromEpochSeconds(999_999_999, nanosecondAdjustment = 999_999_999)
// The string representation of the constructed instants.
println(unixEpochInstant) // 1970-01-01T00:00:00Z
println(instant) // 2001-09-09T01:46:39.999999999Z
//sampleEnd
}
import kotlin.test.*
import kotlin.time.*
import kotlin.time.Duration.Companion.hours
import kotlin.time.Duration.Companion.nanoseconds
fun main() {
//sampleStart
// When nanosecondAdjustment is within the range `0..999_999_999`,
// epochSeconds and nanosecondsOfSecond hold the exact values provided.
val instant1 = Instant.fromEpochSeconds(999_999, nanosecondAdjustment = 123_456_789)
println(instant1.epochSeconds) // 999999
println(instant1.nanosecondsOfSecond) // 123456789
// When nanosecondAdjustment exceeds `999_999_999`, the excess contributes to whole seconds,
// increasing epochSeconds. The remainder forms the new value of nanosecondsOfSecond.
val instant2 = Instant.fromEpochSeconds(1_000_000, nanosecondAdjustment = 100_123_456_789)
println(instant2.epochSeconds) // 1000100
println(instant2.nanosecondsOfSecond) // 123456789
// When nanosecondAdjustment is negative, epochSeconds is decreased
// to offset the negative nanoseconds and ensure nanosecondsOfSecond remains non-negative.
val instant3 = Instant.fromEpochSeconds(1_000_000, nanosecondAdjustment = -100_876_543_211)
println(instant3.epochSeconds) // 999899
println(instant3.nanosecondsOfSecond) // 123456789
//sampleEnd
}