Get to know MDN better
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2015年7月以降、すべてのブラウザーで利用可能です。
Date() コンストラクターは Date オブジェクトを生成します。関数として呼び出された場合は、現在時刻を表す文字列を返します。
Date() コンストラクターには 5 つの基本形があります。
引数が与えられなかった場合、新しく生成された Date オブジェクトはインスタンス化された時点の現在の日付と時刻を表します。返される日時のタイムスタンプは、 Date.now() で返される数値と同じです。
タイムスタンプを表す整数値(1970 年 1 月 1 日午前 0 時 (UTC)、すなわち、元期からのミリ秒数)です。
日時を表す文字列値で、Date.parse() で実装されているのと同じアルゴリズムを使用して解釈できるものです。様々な書式が使用されることについての注意事項は、日時文字列形式を参照してください。
既存の Date オブジェクトです。これは、既存の Date オブジェクトのコピーを、同じ日付と時刻で効率的に作成します。これは new Date(dateObject.valueOf()) と同じですが、 valueOf() メソッドが呼び出されない点が異なります。
Date() コンストラクターに 1 つの引数が渡された場合、 Date インスタンスは特別に扱われます。他のすべての値はプリミティブに変換されます。その結果が文字列であれば、日時文字列として解釈されます。それ以外の場合は、結果のプリミティブはさらに数値に変換され、タイムスタンプとして扱われます。
少なくとも年と月が指定された場合、この Date() の形は Date オブジェクトを返します。その成分値(年、月、日、時、分、秒、ミリ秒)は下記の引数から得られます。欠落しているフィールドには、使用可能な最小の値(day には 1、他のすべての成分には 0)が指定されます。引数の値はすべて、UTC ではなくローカルタイムゾーンに対して評価されます。Date.UTC() は同様の引数を受け入れますが、それぞれの成分を UTC として解釈し、タイムスタンプを返します。
いずれかの引数が定義された境界を超えた場合、「繰り上げ」が行われます。例えば、 monthIndex に 11 よりも大きな値が渡された場合、その月の繰り上がった分で年が増加します。minutes に 59 よりも大きな値が渡された場合、hours がそれに応じて増加します。したがって、new Date(1990, 12, 1) は 1991 年 1 月 1 日を返し、 new Date(2020, 5, 19, 25, 65) は 2020 年 6 月 20 日午前 2 時 5 分を返します。
同様に、いずれかの引数がアンダーフローする場合は、上位の引数を「桁借り」します。例えば、new Date(2020, 5, 0) は、 2020 年 5 月 31 日を返します。
year年を表す整数値です。 0 から 99 までの値は、 1900 から 1999 までの値にマッピングされます。他の値は実際の年になります。例をご覧ください。
monthIndex月を表す整数値です。 0 (1 月)から 11 (12 月)までの値です。
day 省略可月内の日を表す整数値です。デフォルト値は 1 です。
hours 省略可0 から 23 までの間の整数値で、 1 日の中の時を表します。デフォルト値は 0 です。
minutes 省略可整数値で、時刻の分の部分を表します。デフォルト値は 0 です。
seconds 省略可整数値で、時刻の秒の部分を表します。デフォルト値は 0 です。
milliseconds 省略可整数値で、時刻のミリ秒の部分を表します。デフォルト値は 0 です。
new Date() (Date() コンストラクター)を呼び出すと、 Date オブジェクトを返します。日時として無効な文字列、または構築される日時がタイムスタンプの -8,640,000,000,000,000 ミリ秒以前または 8,640,000,000,000,000 ミリ秒より後になる場合、無効な日時(Date オブジェクトで toString() メソッドが "Invalid Date" を返し、 valueOf() メソッドが NaN を返すもの)を返します。
Date() 関数を(new キーワードなしで)呼び出すと、 new Date().toString() と全く同じように、現在の日付と時刻を文字列で表現したものを返します。 Date() 関数を(new キーワードなしで)呼び出す際に指定された引数は無視されます。無効な日時文字列で呼び出された場合でも、あるいは、任意のオブジェクトや他のプリミティブを引数として呼び出された場合でも、常に現在の日付と時刻を文字列で表現したものを返します。
タイミング攻撃やフィンガープリンティングに対する保護機能を提供するために、new Date() の精度がブラウザーの設定に応じて丸められることがあります。Firefox では、privacy.reduceTimerPrecision 設定は既定で有効になっており、既定で 2 ミリ秒になります。この場合、精度は 100ms または privacy.resistFingerprinting.reduceTimerPrecision.microseconds の値のどちらか大きい方になります。
例えば、時刻の精度を下げた場合、new Date().getTime() の結果は常に 2 の倍数になり、privacy.resistFingerprinting を有効にした場合は 100(または privacy.resistFingerprinting.reduceTimerPrecision.microseconds)の倍数になります。
以下の例で、JavaScript の Date を生成するいくつかの方法を示します。
もし、 Date() コンストラクターが Date インスタンスではない 1 つの引数で呼び出された場合、プリミティブに変換された後、文字列であるかどうかがチェックされます。例えば、 new Date(undefined) は new Date() とは異なります。
これは、 undefined は既にプリミティブであるものの、文字列ではないため、数値である NaN に変換され、タイムスタンプとして有効なものにならないからです。他にも、 null は 0 に変換されます。
配列は Array.prototype.toString() によって文字列に変換され、要素はカンマで結合されます。しかし、複数の要素を持つ配列の結果の文字列は、有効な ISO 8601 日時文字列ではないため、その解釈の動作は実装依存となります。 Date() コンストラクターに、配列を渡さないでください。
| ECMAScript® 2027 Language Specification # sec-date-constructor |
ブラウザー互換性一覧表を表示するには、JavaScript を有効にしてください。
より良いインターネットのための青写真。
このコンテンツの一部は、©1998–2026 個人の mozilla.org 協力者です。コンテンツはクリエイティブ・コモンズ・ライセンスのもとで利用できます。