JavaScript/Date

出典: フリー教科書『ウィキブックス(Wikibooks)』
移動先: 案内検索

Dateオブジェクト[編集]

Dateオブジェクトは日付を扱うためのオブジェクトである。 次の様に書くことで、現在時を取得する事が出来る。

var d = new Date();

この後、toStringメソッド等を利用して日付を文字列に変換して人間側で読める形式にしていく。

日付を指定してオブジェクトを作成したい場合には、次の様に日付を指定していく。

var d = new Date( 2007, 10, 21 );	// 2007年11月21日のオブジェクトを作成 
var d = new Date( 2007, 10, 21, 8, 13, 21 );	// 2007年11月21日 8:13:21のオブジェクトを作成
var d = new Date( 99, 6 );	// 1999年7の月のオブジェクトを作成

(年を0~99で指定した場合は19xx年を設定するため、西暦0~99年を指定したいときはsetFullYearを利用する。)

Dateオブジェクトには次の問題点がある。

まず、Dateオブジェクトは有限の範囲の日付しか扱えない。扱える範囲は1970年1月1日を基準として±28万5千年程度なので、実用上問題は無いと思われるが有限であることは把握しておくべきである。

また、コンピューターの時計の場合、実際の地球の自転と標準時との誤差を埋めるため、数年に一度程度、閏秒(うるうびょう)が挿入されるが、ECMA標準では挿入されない仕様となっている。そのため、秒単位では違いがある可能性がある。

Date.parse( string )[編集]

文字列を解析して、1970年1月1日からの経過秒(ミリ秒)で返す。

解析した結果はDateオブジェクトで返されるわけではないので、Dateオブジェクトへの変換は次の様に行う。

var d = new Date();
d.setTime(Date.parse("2001/9/11"));

実際にどこまでの解析を行うかは実装に依存している。

Date.UTC (year, month [, date [, hours [, minutes [, seconds [, ms ] ] ] ] ] )[編集]

1970年1月1日からの経過秒(ミリ秒)で返す。

var d = new Date();
d.setTime( Date.UTC( 2001, 9, 11 ) );

ローカル時間取得のメソッド[編集]

getFullYear()[編集]

西暦を返します。

getMonth()[編集]

月を返す。返される値は0~11の範囲の値を取り、実際の月数より1少ない。 つまり1月の場合は0、2月の場合は1が返る。

getDate()[編集]

日付(1~31)を取得する。

getDay()[編集]

曜日を取得する。

getHours()[編集]

時間(0~23)を取得する。

getSeconds()[編集]

分(0~59)を取得する。

getMinutes()[編集]

秒(0~59)を取得する。

getMilliseconds()[編集]

ミリ秒(1/1000秒単位)を取得する。

setFullYear(year [, month [, date ] ] )[編集]

年を設定する。

setMonth(month [, date ] )[編集]

月を設定する。

setDate(date)[編集]

日を設定する。

setHours(hour [, min [, sec [, ms ] ] ] )[編集]

時を設定する。

setMinutes(min [, sec [, ms ] ] )[編集]

分を設定する。

setSeconds(sec [, ms ] )[編集]

秒を設定する。

setMilliseconds(ms)[編集]

ミリ秒を設定する。

協定世界時のメソッド[編集]

先述したメソッドの場合、使用するマシンの地域によって時間に違いが出るため、ロンドンのグリニッジ天文台を基準に位置によらない世界共通の時間として利用している。 協定世界時(Universal Time, Coordinated)は、現在グリニッジ標準時(GMT)と置き換わって世界標準時として利用されているが生活実感として困るほどの差異は無い。

getUTCFullYear()[編集]

協定世界時での年を取得する。

getUTCMonth()[編集]

協定世界時での月を取得する。

getUTCDate()[編集]

協定世界時での日付を取得する。

getUTCDay()[編集]

協定世界時での週を取得する。

getUTCMinutes()[編集]

協定世界時での秒分取得する。

getUTCSeconds()[編集]

協定世界時での秒を取得する。

getUTCMilliseconds()[編集]

協定世界時でのミリ秒を取得する。

setUTCFullYear(year [, month [, date ] ] )[編集]

協定世界時での年を設定します。

setUTCMonth(month [, date ] )[編集]

協定世界時での月を設定します。

setUTCDate(date)[編集]

協定世界時での日を設定します。

setUTCHours(hour [, min [, sec [, ms ] ] ] )[編集]

協定世界時での時間を設定します。

setUTCMinutes(min [, sec [, ms ] ] )[編集]

協定世界時での分を設定します。

setUTCSeconds(sec [, ms ] )[編集]

協定世界時での秒を設定します。

setUTCMilliseconds(ms)[編集]

協定世界時でのミリ秒を設定します。

時間取得メソッド[編集]

これらのメソッドは時間を人間側で見るために取得するためのメソッドである。 基本的に人間の読みやすい形式に変換を行うが、標準仕様では書式が統一されていないため、どのように表示されるかは実装に依存しているのが現状である。 そのため、実装に依存しない統一された書式を必要とする場合は、プログラマ側でDateオブジェクトのメソッドをオーバーライド(上書き)してやる等をしてやる必要がある。

toString()[編集]

人間に読みやすい形で、文字列に変換した値を返す。 どの様な値を返すのかは仕様に定められておらす、実装によって微妙に値は異なる。

例えば主要なブラウザの場合、次の様な値が返る。

実装 書式
IE Sun Mar 1 13:39:03 UTC+0900 2009
Firefox Sun Mar 01 2009 13:39:03 GMT+0900
Opera Sun, 01 Mar 2009 13:39:03 GMT+0900
Safari

toDateString()[編集]

toStringの変換のうち。年月日にあたる部分の文字列を返す。

実装 書式
IE Sun Mar 1 2009
Firefox Sun Mar 01 2009
Opera Sun, 01 Mar 2009
Safari Sun Mar 01 2009

toTimeString()[編集]

toStringの変換のうち。分秒にあたる部分の文字列を返す。

実装 書式
IE 13:56:06 UTC+0900
Firefox 13:56:06 GMT+0900
Opera 13:56:06 GMT+0900
Safari

toLocaleString()[編集]

使用している環境の、言語や文化に合わせた読みやすい形式の文字列で値を返す。 実際にどの様な値が返るかは実装に依存しており、一定していない。

例えば主要なWebブラウザの場合、日本語環境では次の様な値が返る。

実装 書式
IE 2009年3月1日 13:39:03
Firefox 2009年3月1日 13:39:03
Opera 2009/03/01 13:39:03
Safari Sunday, March 01, 2009 13:39:03

toLocaleDateString()[編集]

toLocaleStringの変換のうち、年月日に相当する部分の文字列を返す。

実装 書式
IE 2009年3月1日
Firefox 2009年3月1日
Opera 2009/03/01
Safari Sunday, March 01, 2009

toLocaleTimeString()[編集]

toLocaleStringの変換のうち。分秒にあたる部分の文字列を返す。 現在の主要なブラウザでは「13:39:03」の様な値が返るが、「13時39分3秒」の様な書式で値が返っても仕様上正しい。

toUTCString()[編集]

結果の書式はtoStrinメソッドと同じものであるが、ローカルの時間ではなく、協定世界時で結果を返す。

実装 書式
IE Sun, 1 Mar 2009 04:39:03 UTC
Firefox Sun, 01 Mar 2009 04:39:03 GMT
Opera Sun, 01 Mar 2009 04:39:03 GMT
Safari Sun, 01 Mar 2009 04:39:03 GMT

その他[編集]

valueOf()[編集]

1970年1月1日0時0分からの時間差をミリ秒単位で取得する。 これは一般的にはUnix時間と言われる時間でUnix内部での時間管理の仕組みと合わせてある(ただしUnix時間は秒区切りでミリ秒区切りではない)。

getTime()[編集]

動作はvalueOfメソッドと同じであるが歴史的経緯からこちらの方の使用を推奨する。

setTime(time)[編集]

1970年1月1日0時0分からの経過時間(ミリ秒)で時間を設定する。

getTimezoneOffset()[編集]

現在の環境とUTC標準との時間差を分で返す。 日本の場合はロンドンからは9時間前倒しなので、9(時間)×60(分)で「-540(分)」が返る。