日付や時刻を扱うことが可能な、JavaScript の Date インスタンスを生成します。Date オブジェクトは、1970 年 1 月 1 日 (UTC) から始まるミリ秒単位の時刻値を基準としています。

構文

new Date();
new Date(value);
new Date(dateString);
new Date(year, month[, day[, hour[, minutes[, seconds[, milliseconds]]]]]);

補足: JavaScript の Date オブジェクトは、JavaScript の Date をコンストラクタとして呼び出すことによってのみインスタンス化できます: 通常の関数として呼び出す (すなわち new 演算子を伴わない) と、Date オブジェクトではなく文字列が返ります。JavaScript の他のオブジェクト型とは異なり、JavaScript の Date オブジェクトにリテラル構文はありません。

引数

補足: Date を複数の引数を伴ってコンストラクタとして呼び出された場所では、値が論理範囲より大きくても (month 値に 13 を与えたり、minute 値に 70 を与える)、調整された値になります。つまり、new Date(2013, 13, 1) は、new Date(2014, 1, 1) と等しくなるように調整され、両者とも 2014-02-01 の日付を生成します (month は 0 を起点とします)。同様に、他の値も次のようになります: new Date(2013, 2, 1, 0, 70)new Date(2013, 2, 1, 1, 10) と等しくなり、2013-03-01T01:10:00 の日付を生成します。

補足: Date を複数の引数を伴ってコンストラクタとして呼び出された場所では、指定した引数は地方時 (local time) を表します。UTC が望まれる場合は、同じ引数で new Date(Date.UTC(...)) を使用してください。

value
1 January 1970 00:00:00 UTC からのミリ秒数を表す整数値です (Unix Epoch; ただし、多くの UNIX タイムスタンプ関数は秒単位でカウントすることを考慮してください)。
dateString
日付を表す文字列値です。文字列は Date.parse() メソッドによる認識可能な形式でなければなりません (IETF 準拠の RFC 2822 timestamps および ISO8601 版 参照)。

注記: ブラウザごとに動作が異なり一貫性がないため、Date コンストラクタ (または同等の Date.parse) で日付文字列を解釈しないように強くすすめます。

year
年を表す整数値です。0 から 99 までの値は、1900 から 1999 の値にマッピングされます。互換性のために (2000 年問題を回避するために)、常に完全な年を指定するべきです。例えば 98 よりも 1998 を使いましょう。後述の例 を参照。
month
月を表す整数値です。0 (1月) から 11 (12月) までの値です。
day
任意。1 か月の日 (1-31) を表す整数値です。
hour
任意。1 日の時 (0-23) を表す整数値です。
minute
任意。分 (0-59) を表す整数値です。
second
任意。秒 (0-59) を表す整数値です。
millisecond
任意。ミリ秒 (0-999) を表す整数値です。

説明

  • 引数を与えない場合、コンストラクタは現在の (システムで設定された) 日付と地方時による時刻を表す JavaScript の Date オブジェクトを生成します。
  • 少なくとも 2 個以上の引数を与えた場合、欠落している引数のうち、day には 1 が、その他には 0 が設定されます。
  • JavaScript の日時は、UTC の 1970 年 1 月 1 日 0 時を基準とするミリ秒単位の値です。1 日は 86,400,000 ミリ秒です。JavaScript の Date オブジェクトの範囲は、UTC の 1970 年 1 月 1 日に対して -100,000,000 日から 100,000,000 日です。
  • JavaScript の Date オブジェクトは、各プラットフォーム間で同一の動作になります。 time 値はシステム間で渡され、地方時を生成するために使用しても、それと同等の時刻を表します。
  • JavaScript の Date オブジェクトは地方時方式はもちろん、UTC (世界協定時) 方式の値もサポートします。グリニッジ標準時 (GMT) としても知られる UTC は、世界時標準 (World Time Standard) によって設定される時間を指します。地方時は、JavaScript を実行しているコンピュータからわかる時刻です。
  • JavaScript Date を関数として呼び出す (すなわち new 演算子を伴わない) と、現在の日時を表す文字列が返ります。

プロパティ

Date.prototype
JavaScript の Date オブジェクトにプロパティを追加できます。
Date.length
Date.length の値は 7 です。これは、コンストラクタで扱われる引数の数です。

メソッド

Date.now()
現在の時刻に対応する数値、すなわち UTC の 1970 年 1 月 1 日 00:00:00 から経過したミリ秒を表す数値を返します。
Date.parse()
JavaScript で日付を表す文字列を解釈して、地方時で 1970 年 1 月 1 日 00:00:00 から経過したミリ秒を表す数値を返します。

注記: ブラウザごとに動作が異なり一貫性がないため、Date.parse で文字列を解釈しないように強くすすめます。

Date.UTC()
コンストラクタですべての引数を与えて呼び出したのと同じように、UTC の 1970 年 1 月 1 日 00:00:00 から経過したミリ秒数を返します。

JavaScript の Date インスタンス

すべての Date インスタンスは Date.prototype を継承します。Date コンストラクタの prototype オブジェクトは、変更してすべての Date インスタンスに影響を及ぼすことができます。

Date.prototype メソッド

ゲッター

Date.prototype.getDate()
地方時に基づき、指定された日時の「日」(1-31) を返します。
Date.prototype.getDay()
地方時に基づき、指定された日時の「曜日」(0-6) を返します。
Date.prototype.getFullYear()
地方時に基づき、指定された日時の「年」(4 桁までの年) を返します。
Date.prototype.getHours()
地方時に基づき、指定された日時の「時」(0-23) を返します。
Date.prototype.getMilliseconds()
地方時に基づき、指定された日時の「ミリ秒」(0-999) を返します。
Date.prototype.getMinutes()
地方時に基づき、指定された日時の「分」(0-59) を返します。
Date.prototype.getMonth()
地方時に基づき、指定された日時の「月」(0-11) を返します。
Date.prototype.getSeconds()
地方時に基づき、指定された日時の「秒」(0-59) を返します。
Date.prototype.getTime()
指定された日時を協定世界時(UTC) の 1970 年 1 月 1 日 00:00:00 からのミリ秒単位の数値で返します。
Date.prototype.getTimezoneOffset()
現地の時間帯のオフセットを分で返します。
Date.prototype.getUTCDate()
協定世界時に基づき、指定された日時の「日」(1-31) を返します。
Date.prototype.getUTCDay()
協定世界時に基づき、指定された日時の「曜日」(0-6) を返します。
Date.prototype.getUTCFullYear()
協定世界時に基づき、指定された日時の「年」(4 桁までの年) を返します。
Date.prototype.getUTCHours()
協定世界時に基づき、指定された日時の「時」(0-23) を返します。
Date.prototype.getUTCMilliseconds()
協定世界時に基づき、指定された日時の「ミリ秒」(0-999) を返します。
Date.prototype.getUTCMinutes()
協定世界時に基づき、指定された日時の「分」(0-59) を返します。
Date.prototype.getUTCMonth()
協定世界時に基づき、指定された日時の「月」(0-11) を返します。
Date.prototype.getUTCSeconds()
協定世界時に基づき、指定された日時の「秒」(0-59) を返します。
Date.prototype.getYear()
地方時に基づき、指定された日時の「年」を返します。代わりに getFullYear() を使用してください。

セッター

Date.prototype.setDate()
地方時に基づき、指定された日時の「日」を設定します。
Date.prototype.setFullYear()
地方時に基づき、指定された日時の「年」を完全な形で設定します。
Date.prototype.setHours()
地方時に基づき、指定された日時の「時」を設定します。
Date.prototype.setMilliseconds()
地方時に基づき、指定された日時の「ミリ秒」を設定します。
Date.prototype.setMinutes()
地方時に基づき、指定された日時の「分」を設定します。
Date.prototype.setMonth()
地方時に基づき、指定された日時の「月」を設定します。
Date.prototype.setSeconds()
地方時に基づき、指定された日時の「秒」を設定します。
Date.prototype.setTime()
Date オブジェクトを協定世界時(UTC) の 1970 年 1 月 1 日 00:00:00 からのミリ秒単位の数で表された時刻に設定します。
Date.prototype.setUTCDate()
協定世界時に基づき、指定された日時の「日」を設定します。
Date.prototype.setUTCFullYear()
協定世界時に基づき、指定された日時の「年」を完全な形で設定します。
Date.prototype.setUTCHours()
協定世界時に基づき、指定された日時の「時」を設定します。
Date.prototype.setUTCMilliseconds()
協定世界時に基づき、指定された日時の「ミリ秒」を設定します。
Date.prototype.setUTCMinutes()
協定世界時に基づき、指定された日時の「分」を設定します。
Date.prototype.setUTCMonth()
協定世界時に基づき、指定された日時の「月」を設定します。
Date.prototype.setUTCSeconds()
協定世界時に基づき、指定された日時の「秒」を設定します。
Date.prototype.setYear()
協定地方時に基づき、指定された日時の「年」を設定します。代わりに setFullYear() を使用してください。

変換ゲッター

Date.prototype.toDateString()
Date の「日付」部を人間が読みやすい形式の文字列にして返します。
Date.prototype.toISOString()
日付を ISO 8601 Extended Format に準じた文字列に変換します。
Date.prototype.toJSON()
toISOString() を使用して Date を表す文字列を返します。JSON.stringify() の代わりに使用してください。
Date.prototype.toGMTString()
GMT (UT) タイムゾーンを基準にした Date を表す文字列を返します。代わりに toUTCString() を使用してください。
Date.prototype.toLocaleDateString()
システム設定の日時の「日付」部を、地域の日付書式に従った文字列に変換して返します。
Date.prototype.toLocaleFormat()
書式化された文字列を使って、日時を文字列に変換します。
Date.prototype.toLocaleString()
日付を地域の日付書式に従った文字列に変換して返します。Object.prototype.toLocaleString() メソッドを上書きします。
Date.prototype.toLocaleTimeString()
システム設定の日時の「時刻」部を、地域の日付書式に従った文字列に変換して返します。
Date.prototype.toSource()
Date オブジェクトと等価のソースを表す文字列を返します。この値を使用して新しいオブジェクトを生成できます。Object.prototype.toSource() メソッドを上書きします。
Date.prototype.toString()
指定された Date オブジェクトを表す文字列を返します。Object.prototype.toString() メソッドを上書きします。
Date.prototype.toTimeString()
Date の「時刻」部を人間が読みやすい形式の文字列にして返します。
Date.prototype.toUTCString()
日時を UTC タイムゾーンを使用する文字列に変換します。
Date.prototype.valueOf()
Date オブジェクトのプリミティブ値を返します。Object.prototype.valueOf() メソッドを上書きします。

Date オブジェクトを生成するいくつかの方法

以下の例で、JavaScript の日時を生成するいくつかの方法を示します:

注記: ブラウザごとに動作が異なり一貫性がないため、Date コンストラクタ (または同等の Date.parse) で日付文字列を解釈しないように強くすすめます。

var today = new Date();
var birthday = new Date('December 17, 1995 03:24:00');
var birthday = new Date('1995-12-17T03:24:00');
var birthday = new Date(1995, 11, 17);
var birthday = new Date(1995, 11, 17, 3, 24, 0);

1900 - 1999 にマッピングされる 2 桁の年

西暦 0 年から 99 年までの間の年を生成および取得するには、Date.prototype.setFullYear() メソッドと Date.prototype.getFullYear() メソッドを使用してください。

var date = new Date(98, 1); // Sun Feb 01 1998 00:00:00 GMT+0000 (GMT)

// 非推奨のメソッド。この 98 は 1998 にマッピングされます
date.setYear(98);           // Sun Feb 01 1998 00:00:00 GMT+0000 (GMT)

date.setFullYear(98);       // Sat Feb 01 0098 00:00:00 GMT+0000 (BST)

経過時間の計算

以下の例で、2 つの JavaScript Date 間で経過した時間を計る方法を示します。

夏時間の切り替えにより、日、月、年の長さが異なることがあるため、経過時間を時、分、秒単位よりも大きな値で明示するには、いくつかの問題に対処する必要があります。試す前に、よく調べて使用してください。

// Date オブジェクトを使用
var start = Date.now();

// 時間を計りたいイベントをここに置く:
doSomethingForALongTime();
var end = Date.now();
var elapsed = end - start; // ミリ秒単位の経過時間
// 組み込みメソッドを使用
var start = new Date();

// 時間を計りたいイベントをここに置く:
doSomethingForALongTime();
var end = new Date();
var elapsed = end.getTime() - start.getTime(); // ミリ秒単位の経過時間
// 関数をテストして戻り値を取得する
function printElapsedTime(fTest) {
  var nStartTime = Date.now(),
      vReturn = fTest(),
      nEndTime = Date.now();

  console.log('Elapsed time: ' + String(nEndTime - nStartTime) + ' milliseconds');
  return vReturn;
}

yourFunctionReturn = printElapsedTime(yourFunction);

注記: Web Performance API の High Resolution Time 機能をサポートするブラウザでは、Performance.now() で、Date.now() よりも高信頼かつ高精度な経過時間の測定が可能です。

仕様

仕様書 策定状況 備考
ECMAScript 2017 Draft (ECMA-262)
Date の定義
ドラフト  
ECMAScript 2015 (6th Edition, ECMA-262)
Date の定義
標準  
ECMAScript 5.1 (ECMA-262)
Date の定義
標準  
ECMAScript 1st Edition (ECMA-262) 標準 初期定義。JavaScript 1.1 で実装。

ブラウザ実装状況

機能 Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
基本サポート (有) [1] (有) [1] (有) [2] (有) [1] (有) [1]
機能 Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
基本サポート (有) (有) (有) (有) (有) (有)

[1] 一部のブラウザは日付の解釈に問題があります: 3/14/2012 blog from danvk Comparing FF/IE/Chrome on Parsing Date Strings

[2] Internet Explorer 8 では ISO8601 Date Format はサポートされていません。他のバージョンでは 日付の解釈に問題があります

ドキュメントのタグと貢献者

タグ: 
 最終更新者: Marsf,