JavaScriptのDateオブジェクトの範囲は?

JavaScript Date オブジェクトの範囲

JavaScript Date オブジェクトの範囲

JavaScript で日付と時刻を扱うための Date オブジェクトは、内部的にミリ秒単位の整数を保持することで、日付と時刻を表します。この整数の範囲は、ECMAScript 標準で定義されており、1970 年 1 月 1 日 00:00:00 UTC を起点としています。

Date オブジェクトの範囲

Date オブジェクトで設定可能な日付の範囲は、1970 年 1 月 1 日 UTC を起点として、前後それぞれ 1 億日です。

項目
最小値 -100,000,000 日 (約紀元前 273,785 年)
最大値 100,000,000 日 (約紀元後 275,757 年)

この範囲を超えた日付を設定しようとすると、Date オブジェクトは NaN (Not a Number) を返します。

コード例

以下のコードは、Date オブジェクトの範囲の境界値を設定して、コンソールに表示する例です。

<script>
  // 最小値
  const minDate = new Date(-100000000 * 24 * 60 * 60 * 1000);
  console.log(minDate.toString()); 

  // 最大値
  const maxDate = new Date(100000000 * 24 * 60 * 60 * 1000);
  console.log(maxDate.toString());
</script>

注意点

  • JavaScript の Date オブジェクトは、内部的にミリ秒単位の整数を用いて日付と時刻を管理しています。そのため、非常に大きな数値を扱う際には、計算の精度に注意する必要があります。
  • 日付の範囲は、JavaScript エンジンや実行環境によって異なる場合があります。

参考文献

よくある質問

Q1: Date オブジェクトの範囲を超えた日付を扱いたい場合は?

A1: JavaScript の Date オブジェクトでは、範囲外の値は扱えません。範囲を超えた日付を扱う必要がある場合は、Moment.js や date-fns などの外部ライブラリを使用することを検討してください。

Q2: Date オブジェクトの範囲はなぜこのようになっているのですか?

A2: ECMAScript 標準で定義されています。1970 年 1 月 1 日 00:00:00 UTC を起点とするのは、Unix 時間との互換性を保つためです。

Q3: Date オブジェクトの精度について教えてください。

A3: Date オブジェクトはミリ秒単位の精度で日付と時刻を扱います。ただし、非常に大きな数値を扱う際には、計算の精度に注意する必要があります。詳細については、ECMAScript 標準を参照してください。

その他の参考記事:JavaScript Date の日付オブジェクト