Max*_*Art 121 javascript datetime max
我想知道哪个是Javascript Date对象允许的最小和最大日期.我发现最小日期是200000 bC,但我无法得到任何参考.
有人知道答案吗?我只是希望它不依赖于浏览器.
"epoch time"中的答案(= 1970-01-01 00:00:00 UTC + 00的毫秒数)将是最好的.
T.J*_*der 162
根据规范,§15.9.1.1:
Date对象包含一个数字,表示一个毫秒内的特定时刻.这样的数字称为时间值.时间值也可以是NaN,表示Date对象不表示特定的时刻.
自UTC时间1970年1月1日起,时间以ECMAScript为单位,以毫秒为单位.在时间值中,忽略闰秒.假设每天恰好有86,400,000毫秒.ECMAScript数值可以表示从-9,007,199,254,740,992到9,007,199,254,740,992的所有整数; 此范围足以测量从UTC时间1970年1月1日起向前或向后约285,616年内的任何瞬间的毫秒精度.
ECMAScript日期对象支持的实际时间范围略小:相对于UTC时间1970年1月1日午夜测量的时间恰好为-100,000,000天到100,000,000天.这给UTC时间1970年1月1日的任何一方提供了8,640,000,000,000,000毫秒的范围.
1970年1月1日开始的午夜的确切时刻由值+0表示.
第三段是最相关的.根据该段,我们可以得到每个规格的确切最早日期new Date(-8640000000000000),即公元前271,821周二,4月20日星期二(BCE = 普通时代之前,例如,-271,821年).
Sha*_*tin 42
为了增加TJ的答案,超过最小值/最大值会生成无效日期.
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 DateRun Code Online (Sandbox Code Playgroud)
小智 14
对已接受答案的小修正;最小日期的年份实际上是公元前2 年271,82年,正如您在运行以下代码片段时看到的那样:
console.log(new Date(-8640000000000000).toLocaleString("en", {"year": "numeric", "era": "short"}))Run Code Online (Sandbox Code Playgroud)
事实上,-271,821 年实际上是公元前 271,822 年,因为 JavaScript Date(以及ISO 8601)使用天文年份编号,即使用零年。因此,1 年是 1 CE,0 年是 1 BCE,-1 年是 2 BCE,等等。
| 归档时间: |
|
| 查看次数: |
115836 次 |
| 最近记录: |