Zastanawiałem się, jaka jest minimalna i maksymalna data dozwolona dla Date
obiektu JavaScript . Okazało się, że minimalna data to około 200000 lat pne, ale nie mogłem uzyskać na ten temat żadnej informacji.
Czy ktoś zna odpowiedź? Mam tylko nadzieję, że nie zależy to od przeglądarki.
Najlepsza byłaby odpowiedź w „czasie epoki” (= milisekundy od 1970-01-01 00:00:00 UTC + 00).
javascript
datetime
max
MaxArt
źródło
źródło
Odpowiedzi:
Ze specyfikacji, §15.9.1.1 :
Trzeci akapit jest najbardziej istotny. Na podstawie tego akapitu możemy uzyskać dokładną najwcześniejszą datę według specyfikacji
new Date(-8640000000000000)
, czyli wtorek 20 kwietnia 271 821 pne (pne = Przed naszą erą , np. Rok -271 821).źródło
Date.UTC(-271821, 3, 20)
zwraca-8640000000000000
. :-)Aby wzmocnić odpowiedź TJ, przekroczenie wartości min / max generuje nieprawidłową datę.
let maxDate = new Date(8640000000000000); let minDate = new Date(-8640000000000000); console.log(new Date(maxDate.getTime()).toString()); console.log(new Date(maxDate.getTime() - 1).toString()); console.log(new Date(maxDate.getTime() + 1).toString()); // Invalid Date console.log(new Date(minDate.getTime()).toString()); console.log(new Date(minDate.getTime() + 1).toString()); console.log(new Date(minDate.getTime() - 1).toString()); // Invalid Date
źródło
Jak widać, 01/01/1970 zwraca 0, co oznacza, że jest to najmniejsza możliwa data.
new Date('1970-01-01Z00:00:00:000') //returns Thu Jan 01 1970 01:00:00 GMT+0100 (Central European Standard Time) new Date('1970-01-01Z00:00:00:000').getTime() //returns 0 new Date('1970-01-01Z00:00:00:001').getTime() //returns 1
źródło