2009-10-22 15 views
10

32ビットOS /ブラウザを想定すると、2038年以降に日付を設定すると、JavaScriptで作成されたDateオブジェクトが1970年にロールオーバーできますか?JavaScriptのDateオブジェクトはY2038問題の影響を受けやすいですか?

Mozilla documentationによれば、年は9999に設定できますが、これがすべてのJavaScript実装で一貫しているかどうか、またはこれが仕様の記述の正確な記述であるかどうかはわかりません。

ドキュメントに書かれているように、時間を格納するのに64ビットの数値を使用するか、ISOデータ形式で実際のデータを格納するかのようです。

ブラウザはこれをどのように実装するか知っていますか?

+0

試してみるとどうなりますか? –

+1

私は試しましたが、私は64ビットのOSを持っていますので、私が行うことは、一般的に何が起こっているのかを反映することはできません。 –

答えて

17

それはすべきではない - ECMAScript specification seciont 15.9.1.1によると:

時間は1970年1月1日UTCからのミリ秒でのECMAScriptで測定されます。うるう秒は無視されます。 1日あたり正確に86,400,000ミリ秒があると仮定します。 ECMAScriptの数値は、-9,007,199,254,740,991から9,007,199,254,740,991までのすべての整数を表すことができます。この範囲では、UTC 1970年1月1日から約285,616年の間に、順方向または逆方向のいずれかの瞬間のミリ秒の精度を測定するのに十分です。

ECMAScriptのDateオブジェクトでサポートされている実際の時間はわずかに短く、UTC 1970年1月1日の初めの深夜を基準にして正確に-100,000,000〜100,000,000日です。

これは、1月1日のいずれかの側に、8,40,000,000,000,000,000ミリ秒の範囲を与えます。 1970 UTCです。 1970年1月1日初めの真夜中の正確な瞬間は、値+0で表されます。

関連する問題