Javascript允许哪些日期?

时间:2012-09-30 23:48:06

标签: javascript datetime

我可以在Javascript中使用Date对象的最长和最短日期是多少?

是否有可能代表古代历史日期(如January 1, 2,500 B.C.)或未来的日期(如October 7, 10,000)?

如果这些远离现在的日期无法用Date对象表示,我应该如何表示它们?

1 个答案:

答案 0 :(得分:16)

根据§15.9.1.1 of the ECMA-262 specification

  

自UTC时间1970年1月1日起,ECMAScript中的时间以毫秒为单位   ...
  ECMAScript日期对象支持的实际时间范围是......相对于UTC时间1970年1月1日午夜测量的确切 -100,000,000天到100,000,000天。这给出了8,640,000,000,000,000毫秒到8,640,000,000,000,000毫秒的范围世界于1970年1月1日的任何一方。

所以用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

简而言之,JavaScript Date类型足以在1970年1月1日之前或之后的大约285,616年内测量毫秒精度的时间。问题中贴出的日期非常适合这个范围。