小编典典

最小和最大日期

javascript

我想知道哪个是Javascript Date对象允许的最小和最大日期。我发现最小日期大约是200000 BC,但是我没有得到任何参考。

有人知道答案吗?我只是希望它不依赖于浏览器。

最好以“纪元时间”(= 1970-01-01 00:00:00 UTC + 00的毫秒数)回答。


阅读 472

收藏
2020-05-01

共1个答案

小编典典

根据规范§15.9.1.1:

Date对象包含一个数字,该数字指示毫秒内的特定时间点。这样的数字称为时间值。时间值也可以是NaN,表示Date对象不代表特定的时间点。

自1970年1月1日UTC以来,时间以ECMAScript表示,以毫秒为单位。在时间值上,leap秒将被忽略。假设每天精确地有86,400,000毫秒。ECMAScriptNumber值可以表示从–9,007,199,254,740,992到9,007,199,254,740,992的所有整数;从1970年1月1日UTC向前或向后大约285,616年内,此范围足以测量毫秒级的时间。

ECMAScript Date对象支持的实际时间范围略小:相对于UTC1970年1月1日开始的午夜,精确地–100,000,000天至100,000,000天。这给UTC时间1970年1月1日的任一侧提供了8,640,000,000,000,000毫秒的范围。

格林尼治标准时间1970年1月1日开始的确切午夜时刻由值+0表示。

第三段是最相关的。基于该段,我们可以从获取每个规范的确切最早日期newDate(-8640000000000000),即公元前271,821年4月20日(星期二)(公元前=共同时代之前,例如-271,821年)。

2020-05-01