8

DateJavascript のオブジェクトで使用できる最大日付と最小日付は?

古代の歴史的な日付 ( などJanuary 1, 2,500 B.C.) や、はるか未来の日付 ( など) を表すことは可能October 7, 10,000ですか?

これらの遠い日付をオブジェクトで表すことができないDate場合、どのように表す必要がありますか?

4

1 に答える 1

18

ECMA-262 仕様の §15.9.1.1 によると、

時間は、1970 年 1 月 1 日 UTC からのミリ秒単位で ECMAScript で測定されます。
...
ECMAScript の Date オブジェクトがサポートする実際の時間の範囲は ... 1970 年 1 月 1 日 UTC の開始時の午前 0 時を基準として正確に -100,000,000 日から 100,000,000 日です。これにより、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 年間、ミリ秒単位の精度で時間を測定するのに十分です。質問に投稿された日付は、この範囲内に非常に快適に収まっています。

于 2012-09-30T23:48:06.433 に答える