Według §15.9.1.1 of the ECMA-262 specification,
Czas jest mierzony w milisekundach w ECMAScript od 01 stycznia 1970 UTC.
...
Rzeczywisty zakres czasów obsługiwanych przez obiekty Data ECMAScript to ... dokładnie -100 000 000 dni do 100 000 000 dni, mierzone w stosunku do północy na początku 1 stycznia 1970 UTC. Daje to zakres 8,640 000 000 000 000 milisekund po obu stronach z dnia 1 stycznia 1970 roku UTC.
więc najwcześniej reprezentowalna z obiektem Date
jest dość daleko poza znanym ludzkiej historii:
new Date(-8640000000000000).toUTCString()
// Tue, 20 Apr 271,822 B.C. 00:00:00 UTC
Ostateczny termin jest wystarczający, aby trwać poza Y10K a nawet poza Y100K, ale będą musiały być przerobione kilkaset lat przed Y276K.
new Date(8640000000000000).toUTCString()
// Sat, 13 Sep 275,760 00:00:00 UTC
Dowolna data poza tym zakresem zwróci Invalid Date
.
new Date(8640000000000001) // Invalid Date
new Date(-8640000000000001) // Invalid Date
W skrócie, typ JavaScript Date
będzie wystarczające do pomiaru czasu do millisecond dokładność w ciągu około 285616 lat przed 1 stycznia 1970 roku lub po. Daty podane w pytaniu są bardzo wygodne w tym zakresie.
Więc, o co pytamy * "Jeśli te odległe daty nie mogą być reprezentowane ..." * kiedy już wiesz, że mogą być reprezentowane? Po co zadawać pytanie, jeśli wiesz, że to kwestia? : P –
@ user1689607 Nie wiem, bez niego pytanie wydawało się niekompletne. –
Cóż, i tak było to interesujące pytanie. Dobrze widzieć, że JS nie cierpi z powodu problemu z 2038 roku. –