Dateオブジェクトのインスタンスを作成する

Date オブジェクトのインスタンスを作成する方法について解説します。インスタンスを作成するには Date オブジェクトのコンストラクタを使って作成します。

(Last modified: )

Dateオブジェクトのコンストラクタの種類

Date オブジェクトのインスタンスを作成するにはコンストラクタを使用します。書式は次の通りです。

new Date()
new Date(経過ミリ秒数)
new Date(日付と時刻を表す文字列)
new Date(年, 月 [, 日 [, 時 [, 分 [, 秒 [, ミリ秒]]]]])

引数の指定方法が異なる 4 種類のコンストラクタが使用できます。このあと、それぞれの使い方について解説します。

※ Date オブジェクトのインスタンスを作成すると、特定の日時を表す値を持ちます。この値は内部的には 1970 年 1 月 1 日 0 時 0 分 0 秒 UTC からの経過ミリ秒という形式で保管されており、 Date オブジェクトのインスタンスメソッドを使うことで色々な形式で情報を取り出すことができます。

現在日時のDateオブジェクトのインスタンスを作成する

コンストラクタで引数を指定せずに Date オブジェクトのインスタンスを作成すると、現在の日時の値を持つインスタンスを作成します。書式は次のとおりです。

new Date()

次のサンプルをみてください。

let d = new Date();

console.log(d.toString());
>> Thu Oct 15 2020 12:44:10 GMT+0900 (日本標準時)

console.log(d.toUTCString());
>> Thu, 15 Oct 2020 03:44:10 GMT

インスタンスを作成した時の日時の値を持つインスタンスを作成しました。

なお別のページで解説しますが Date オブジェクトの値を出力するのに使用している toString メソッドはローカルの環境で設定されているタイムゾーンで日付が表示されます。 toUTCString メソッドはタイムゾーンを UTC (協定世界時) として日付が表示されます。

経過ミリ秒を指定してDateオブジェクトのインスタンスを作成する

基準日時 1970 年 1 月 1 日 0 時 0 分 0 秒 UTC からの経過ミリ秒を指定して Date オブジェクトのインスタンスを作成します。書式は次のとおりです。

new Date(経過ミリ秒数)

引数に指定した基準日時からの経過ミリ秒数で表される日時の値を持つ Date オブジェクトのインスタンスを作成します。このコンストラクタでは UTC からの経過ミリ秒で日時を指定するため、タイムゾーンについて考慮する必要がありません。

次のサンプルをみてください。

let d1 = new Date(1000);
console.log(d1.toUTCString());
>> Thu, 01 Jan 1970 00:00:01 GMT

let d2 = new Date(1602679695309);
console.log(d2.toUTCString());
>> Wed, 14 Oct 2020 12:48:15 GMT

最初の例では基準日時からの 1000 ミリ秒( 1 秒)経過後の日時を値を持つインスタンスを作成しました。次の例では基準日時からの 1602679695309 ミリ秒経過後の日時を値を持つインスタンスを作成しました。

日時を表す文字列を指定してDateオブジェクトのインスタンスを作成する

日時を表す文字列を指定して Date オブジェクトのインスタンスを作成します。書式は次のとおりです。

new Date(日付と時刻を表す文字列)

文字列の形式は特に決まっていません。

次のサンプルをみてください。

let d1 = new Date('2020-10-14T21:48:15');
console.log(d1.toString());
>> Wed Oct 14 2020 21:48:15 GMT+0900 (日本標準時)

let d2 = new Date('2020-10-14T21:48:15+0900');
console.log(d2.toString());
>> Wed Oct 14 2020 21:48:15 GMT+0900 (日本標準時)

let d3 = new Date('2020-10-14T21:48:15Z');
console.log(d3.toString());
>> Thu Oct 15 2020 06:48:15 GMT+0900 (日本標準時)

タイムゾーンを指定しなかった場合とタイムゾーンとして日本標準時および UTC を指定した場合でインスタンスを作成しました。タイムゾーンを指定しなかった場合は、ローカルの環境で設定されているタイムゾーンでの日時が指定されたものとをして扱われるようです。

年や分などを数値で指定してDateオブジェクトのインスタンスを作成する

年、月、日、時、分、秒、ミリ秒に関する数値をそれぞれお指定して Date オブジェクトのインスタンスを作成します。書式は次のとおりです。

new Date(年, 月 [, 日 [, 時 [, 分 [, 秒 [, ミリ秒]]]]])

年と月については必須の項目ですが、それ以外については省略可能です。省略した場合、日は 1 に、それ以外の 時、分、秒、ミリ秒は 0 が設定されます。年については 4 桁または 2 桁で指定します。 2 桁で指定した場合は 1900 + 年 となります。また月に関しては 0 から 11 の値で指定します。 1 月が 0 、 2 月が 1 、 12 月 が 11 です。

この書式ではタイムゾーンに関する設定項目がなく、ローカルの環境で設定されているタイムゾーンが適用されます。同じ年や月を指定しても、異なるタイムゾーンの環境でプログラムを実行すると異なる日時の値を持つ Date オブジェクトのインスタンスが作成されますのでご注意ください。

次のサンプルをみてください。

let d1 = new Date(2012, 9);
console.log(d1.toString());
>> Mon Oct 01 2012 00:00:00 GMT+0900 (日本標準時)

let d2 = new Date(96, 3, 24);
console.log(d2.toString());
>> Wed Apr 24 1996 00:00:00 GMT+0900 (日本標準時)

let d3 = new Date(2020, 9, 14, 16, 28, 5, 114);
console.log(d3.toString());
>> Wed Oct 14 2020 16:28:05 GMT+0900 (日本標準時)

最初の例では年と月のみ指定しているので、それ以外の値についてはデフォルトの値が設定されています。二番目の例では年を 2 桁で指定しているので 1900 + 指定した年 となっています。三番目の例ではすべての項目について指定しました。

コンストラクタをnew演算子をつけずに呼びだした場合

Date オブジェクトのコンストラクタを new 演算子を付けずに関数として呼び出すと、現在の日時を表す文字列を返します。

次のサンプルをみてください。

let str = Date();
console.log(str);
>> Thu Oct 15 2020 04:33:42 GMT+0900 (日本標準時)

console.log(typeof str)
>> string

現在の日時の値を文字列として取得しました。なおコンストラクタに引数を指定しても無視されます。

-- --

Date オブジェクトのインスタンスを作成する方法について解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。