Pod tym postem Skąd bierzecie akutalną datę i jak to testujecie? wywiązała się dość ciekawa dyskusja z @Charles_Ray i @szprotki_w_oleju o reprezentacji czasu.
W skrócie ja twierdzę, że chociaż Instant
jako taki nie posiada w sobie oznaczenia strefy czasowej, to już w dokumentacji jest określony jako "liczba sekund od 1970-01-01 00:00:00.000" https://docs.oracle.com/javase/8/docs/api/java/time/Instant.html
Przykład (akurat mam kotlina pod ręką):
val warsawClock = Clock.system(ZoneId.of(ZoneId.SHORT_IDS["EST"]))
val californiaClock = Clock.system(ZoneId.of(ZoneId.SHORT_IDS["PST"]))
val utcClock = Clock.systemUTC()
println("UTC instant: ${warsawClock.instant()} local instant: ${californiaClock.instant()} UTC clock ${utcClock.instant()}")
daje odpowiedź:
UTC instant: 2022-05-22T17:20:42.944125400Z local instant: 2022-05-22T17:20:42.944125400Z UTC clock 2022-05-22T17:20:42.944125400Z
Wniosek - Instant
zawsze powinien być rozumiany jako liczba milisekund od początku epoki w strefie UTC.
Kluczowe miejsce z dokumentacji klasy Instant:
The epoch-seconds are measured from the standard Java epoch of 1970-01-01T00:00:00Z where instants after the epoch have positive values, and earlier instants have negative values.
"Z" na końcu to oznaczenie strefy czasowej UTC https://pl.wikipedia.org/wiki/ISO_8601