我可以Date
在 Javascript 中使用对象的最大和最小日期是多少?
是否可以表示古代历史日期(如January 1, 2,500 B.C.
)或远在未来的日期(如October 7, 10,000
)?
如果这些遥远的日期不能用Date
对象表示,我应该如何表示它们?
我可以Date
在 Javascript 中使用对象的最大和最小日期是多少?
是否可以表示古代历史日期(如January 1, 2,500 B.C.
)或远在未来的日期(如October 7, 10,000
)?
如果这些遥远的日期不能用Date
对象表示,我应该如何表示它们?
自 1970 年 1 月 1 日 UTC 以来,时间在 ECMAScript 中以毫秒为单位进行测量。
...
ECMAScript Date 对象支持的实际时间范围是 ... 精确到 –100,000,000 天到 100,000,000 天,相对于 1970 年 1 月 1 日 UTC 开始时的午夜测量。这为 1970 年 1 月 1 日 UTC 的任一侧提供了 8,640,000,000,000,000 毫秒的范围。
因此,该物体可表示的最早日期Date
远远超出了已知的人类历史:
new Date(-8640000000000000).toUTCString()
// Tue, 20 Apr 271,822 B.C. 00:00:00 UTC
最新的日期足以持续超过Y10K甚至超过 Y100K,但需要在 Y276K 之前的几百年进行返工。
new Date(8640000000000000).toUTCString()
// Sat, 13 Sep 275,760 00:00:00 UTC
此范围之外的任何日期都将返回Invalid Date
。
new Date(8640000000000001) // Invalid Date
new Date(-8640000000000001) // Invalid Date
简而言之,JavaScriptDate
类型足以测量 1970 年 1 月 1 日之前或之后大约 285,616 年的时间到毫秒精度。问题中发布的日期非常舒适地在此范围内。