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 の日付オブジェクト