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

構文

new Date();
new Date(value);
new Date(dateString);
new Date(year, monthIndex [, day [, hours [, minutes [, seconds [, milliseconds]]]]]);

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

引数

注: 引数 monthIndex は 0 から始まります。 つまり 1 月 = 012 月 = 11 です。

注: 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
1970年01月01日 00:00:00 UTC からのミリ秒数 (Unix エポック) を表す整数値です (ただし、多くの UNIX タイムスタンプ関数は秒単位でカウントすることを考慮してください)。なお、閏秒を無視します。
dateString
日付を表す文字列値です。文字列は Date.parse() メソッドによる認識可能な形式でなければなりません (IETF 準拠の RFC 2822 timestamps および ISO8601 版 参照)。

注: ブラウザごとに動作が異なり一貫性がないため、Date コンストラクタ (または同等の Date.parse) で日付文字列を解釈しないように強くすすめます。RFC 2822 形式の文字列のサポートは、慣例にすぎません。 ISO 8601 フォーマットのサポートは、日付のみの文字列 (例: "1970-01-01") が地方時ではなくUTCとして扱われる点で異なります。

year
年を表す整数値です。0 から 99 までの値は、1900 から 1999 の値にマッピングされます。互換性のために (2000 年問題を回避するために)、常に完全な年を指定するべきです。例えば 98 よりも 1998 を使いましょう。後述の例 を参照。
monthIndex
月を表す整数値です。0 (1月) から 11 (12月) までの値です。
day
任意。1 か月の日 (1-31) を表す整数値です。
hours
任意。1 日の時 (0-23) を表す整数値です。
minutes
任意。分 (0-59) を表す整数値です。
seconds
任意。秒 (0-59) を表す整数値です。
milliseconds
任意。ミリ秒 (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 オブジェクトを生成するいくつかの方法

以下の例で、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() よりも高信頼かつ高精度な経過時間の測定が可能です。

Unix エポックからの経過秒数を得る

var seconds = Math.floor(Date.now() / 1000);

この場合、整数だけを返すことが重要です (単純な除算ではできません)。また、実際に経過した秒数を返すことも重要です (ですから、上の例では Math.round() ではなく Math.floor() を使っています)。

仕様

仕様書 策定状況 コメント
ECMAScript Latest 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 で実装。

ブラウザー実装状況

機能ChromeEdgeFirefoxInternet ExplorerOperaSafari
基本対応 あり あり1 あり1 あり あり
@@toPrimitive ? ?44 ? ? ?
UTC あり あり1 あり あり あり
getDate あり あり1 あり あり あり
getDay あり あり1 あり あり あり
getFullYear あり あり1 あり あり あり
getHours あり あり1 あり あり あり
getMilliseconds あり あり1 あり あり あり
getMinutes あり あり1 あり あり あり
getMonth あり あり1 あり あり あり
getSeconds あり あり1 あり あり あり
getTime あり あり1 あり あり あり
getTimezoneOffset あり あり15 あり あり
getUTCDate あり あり1 あり あり あり
getUTCDay あり あり1 あり あり あり
getUTCFullYear あり あり1 あり あり あり
getUTCHours あり あり1 あり あり あり
getUTCMilliseconds あり あり1 あり あり あり
getUTCMinutes あり あり1 あり あり あり
getUTCMonth あり あり1 あり あり あり
getUTCSeconds あり あり1 あり あり あり
getYear あり あり1 あり あり あり
now5 あり3910.54
parse あり あり1 あり あり あり
prototype あり あり1 あり あり あり
setDate あり あり1 あり あり あり
setFullYear あり あり1 あり あり あり
setHours あり あり1 あり あり あり
setMilliseconds あり あり1 あり あり あり
setMinutes あり あり1 あり あり あり
setMonth あり あり1 あり あり あり
setSeconds あり あり1 あり あり あり
setTime あり あり1 あり あり あり
setUTCDate あり あり1 あり あり あり
setUTCFullYear あり あり1 あり あり あり
setUTCHours あり あり1 あり あり あり
setUTCMilliseconds あり あり1 あり あり あり
setUTCMinutes あり あり1 あり あり あり
setUTCMonth あり あり1 あり あり あり
setUTCSeconds あり あり1 あり あり あり
setYear あり あり1 あり あり あり
toDateString あり あり1 あり あり あり
toGMTString あり あり1 あり あり あり
toISOString あり あり19 あり あり
toJSON あり あり18 あり あり
toLocaleDateString あり あり1 あり あり あり
toLocaleFormat なし なし1.5 — 58 なし なし なし
toLocaleString あり あり1 あり あり あり
toLocaleTimeString あり あり1 あり あり あり
toSource なし なし1 なし なし なし
toString あり あり1 あり あり あり
toTimeString あり あり1 あり あり あり
toUTCString あり あり1 あり あり あり
valueOf あり あり1 あり あり あり
機能Android webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
基本対応 あり あり あり4 あり あり あり
@@toPrimitive ? ? ?44 ? ? ?
UTC あり あり あり4 あり あり あり
getDate あり あり あり4 あり あり あり
getDay あり あり あり4 あり あり あり
getFullYear あり あり あり4 あり あり あり
getHours あり あり あり4 あり あり あり
getMilliseconds あり あり あり4 あり あり あり
getMinutes あり あり あり4 あり あり あり
getMonth あり あり あり4 あり あり あり
getSeconds あり あり あり4 あり あり あり
getTime あり あり あり4 あり あり あり
getTimezoneOffset あり あり あり4 あり あり あり
getUTCDate あり あり あり4 あり あり あり
getUTCDay あり あり あり4 あり あり あり
getUTCFullYear あり あり あり4 あり あり あり
getUTCHours あり あり あり4 あり あり あり
getUTCMilliseconds あり あり あり4 あり あり あり
getUTCMinutes あり あり あり4 あり あり あり
getUTCMonth あり あり あり4 あり あり あり
getUTCSeconds あり あり あり4 あり あり あり
getYear あり あり あり4 あり あり あり
now あり あり あり4 あり あり あり
parse あり あり あり4 あり あり あり
prototype あり あり あり4 あり あり あり
setDate あり あり あり4 あり あり あり
setFullYear あり あり あり4 あり あり あり
setHours あり あり あり4 あり あり あり
setMilliseconds あり あり あり4 あり あり あり
setMinutes あり あり あり4 あり あり あり
setMonth あり あり あり4 あり あり あり
setSeconds あり あり あり4 あり あり あり
setTime あり あり あり4 あり あり あり
setUTCDate あり あり あり4 あり あり あり
setUTCFullYear あり あり あり4 あり あり あり
setUTCHours あり あり あり4 あり あり あり
setUTCMilliseconds あり あり あり4 あり あり あり
setUTCMinutes あり あり あり4 あり あり あり
setUTCMonth あり あり あり4 あり あり あり
setUTCSeconds あり あり あり4 あり あり あり
setYear あり あり あり4 あり あり あり
toDateString あり あり あり4 あり あり あり
toGMTString あり あり あり4 あり あり あり
toISOString あり あり あり4 あり あり あり
toJSON あり あり あり4 あり あり あり
toLocaleDateString あり あり あり4 あり あり あり
toLocaleFormat なし なし なし4 — 58 なし なし なし
toLocaleString あり あり あり4 あり あり あり
toLocaleTimeString あり あり あり4 あり あり あり
toSource なし なし なし4 なし なし なし
toString あり あり あり4 あり あり あり
toTimeString あり あり あり4 あり あり あり
toUTCString あり あり あり4 あり あり あり
valueOf あり あり あり4 あり あり あり

1. The ISO8601 Date Format is not supported in Internet Explorer 8.

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

タグ: 
最終更新者: silverskyvicto,