Dateオブジェクトが扱える範囲は、1970年1月1日の前後273,785年です。よって275755年まで扱えることになります。
new Date()
引数を指定しないと、現在の日時でDateオブジェクトが生成されます。
new Date( milliseconds )
1970/1/1 UTCからmillisecondsミリ秒経過した日時と解釈されます。
new Date( year, month, day [, hour, minute, second, millisecond] )Date - JavaScript | MDN
monthは0が起点のため、1月ならば0、12月ならば11のように指定します。
newを省略すると、引数が無視され現在の日時が文字列で返されます。
Date.parse( datestring )parse - JavaScript | MDN
文字列を解析し、ミリ秒で表された数値形式 (getTime()で返される値) で結果を返します。
new Date( datestring )
コンストラクタの引数に文字列を渡した場合、それを解析しDateオブジェクトを返します。ただしその文字列は、Date.parse()メソッドで解析できる形式である必要があります。
| 規格 | 文字列 | IE8 | IE11 | Firefox | Chrome | あなたの ブラウザ  | 
				
|---|---|---|---|---|---|---|
'2008年5月1日 2:00:00' | 
					× | × | × | × | ? | |
'2008/5/1 2:00:00' | 
					△ | ○ | ○ | ○ | ? | |
'2008/05/01 02:00:00' | 
					△ | ○ | ○ | ○ | ? | |
'2008/05/0102:00:00' | 
					△ | △ | × | × | ? | |
'2008-5-1 2:00:00' | 
					× | × | × | ○ | ? | |
| ISO-8601 | '20080501T020000+0900' | 
					× | × | × | × | ? | 
| ISO-8601 拡張形式 | '2008-05-01T02:00:00+09:00' | 
					× | ○ | ○ | ○ | ? | 
| RFC 3339 | ||||||
'2008/5/1T2:00:00+0900' | 
					○ | ○ | × | × | ? | |
'2008/5/1 2:00:00+0900' | 
					○ | ○ | × | ○ | ? | |
'2008/5/1 2:00:00 +0900' | 
					○ | ○ | ○ | ○ | ? | |
| RFC 822 | 'Thu, 1 May 08 02:00:00 +0900' | 
					× | × | × | ○ | ? | 
| RFC 1036 | ||||||
| RFC 1123 | 'Thu, 1 May 2008 02:00:00 +0900' | 
					○ | ○ | ○ | ○ | ? | 
| RFC 2822 | ||||||
'Thu May 1 02:00:00 +0900 2008' | 
					× | × | ○ | ○ | ? | |
'Thu May 1 02:00:00 UTC+0900 2008' | 
					○ | ○ | ○ | ○ | ? | |
'Thu May 01 2008 02:00:00 GMT+0900' | 
					○ | ○ | ○ | ○ | ? | |
'Thu May 01 2008 02:00:00 GMT+0900 (Japan Standard Time)' | 
					○ | ○ | ○ | ○ | ? | |
| RFC 850 | 'Thursday, 01-May-08 02:00:00 JST' | 
					× | × | × | × | ? | 
'Wednesday, 30-Apr-08 17:00:00 GMT' | 
					× | × | × | ○ | ? | 
IE9やFirefoxなどは解析の失敗時に、'Invalid Date'とtoString()が表現するDateオブジェクトを返します。この特殊な値はisNaN()で判定できます。
次のコードを複数のブラウザで実行し、その結果を表にまとめました。
var date = new Date( 'Thu, 01 May 2008 02:00:00' ); document.writeln( date.toString() ); document.writeln( date.toLocaleString() ); document.writeln( date.toUTCString() ); // Date document.writeln( date.toDateString() ); document.writeln( date.toLocaleDateString() ); // Time document.writeln( date.toTimeString() ); document.writeln( date.toLocaleTimeString() );
| 分類 | メソッド | IE6, IE7, IE8 | Firefox 3 | Chrome 4 | 
|---|---|---|---|---|
| 日付&時刻 | toString() | Thu May 1 02:00:00 UTC+0900 2008 | Thu May 01 2008 02:00:00 GMT+0900 | Thu May 01 2008 02:00:00 GMT+0900 (Japan Standard Time) | 
| toLocaleString() | 2008年5月1日 2:00:00 | Thu May 01 2008 02:00:00 GMT+0900 (Japan Standard Time) | ||
| toUTCString() | Wed, 30 Apr 2008 17:00:00 UTC | Wed, 30 Apr 2008 17:00:00 GMT | ||
| toGMTString() | ||||
| 日付 | toDateString() | Thu May 1 2008 | Thu May 01 2008 | |
| toLocaleDateString() | 2008年5月1日 | Thursday, May 01, 2008 | ||
| 時刻 | toTimeString() | 02:00:00 UTC+0900 | 02:00:00 GMT+0900 | 02:00:00 GMT+0900 (Japan Standard Time) | 
| toLocaleTimeString() | 2:00:00 | 02:00:00 | ||
出力フォーマットはブラウザで異なるため、これを統一するには独自の関数で処理する必要があります。
toLocaleString()でoptions引数がサポートされるならば、それでフォーマットを指定できます。ブラウザの実装状況 - Date.prototype.toLocaleString() - JavaScript | MDN
// 出力例:2008/5/1 2:00:00
function toLocaleString( date )
{
    return [
        date.getFullYear(),
        date.getMonth() + 1,
        date.getDate()
        ].join( '/' ) + ' '
        + date.toLocaleTimeString();
}
			時刻も独自に処理する場合には、
( '0' + date.getMinutes() ).slice( -2 )
のようにゼロパディングをすると書式が整います。
一方でprototypeプロパティを使用して、組み込みのメソッドを書き換える方法もあります。
Date.prototype.toLocaleString = function()
{
    return [
        this.getFullYear(),
        this.getMonth() + 1,
        this.getDate()
        ].join( '/' ) + ' '
        + this.toLocaleTimeString();
}
		date.toLocaleString([locales[, options]])Date.prototype.toLocaleString() - JavaScript | MDN
localesなどの引数をサポートするのは、Internet Explorer 11以降です。ブラウザの実装状況 - Date.prototype.toLocaleString() - JavaScript | MDN
new Date().toLocaleString('ja-JP', {era:'long'});
			
			| locales | 出力例 | |
|---|---|---|
| 日本語-日本 | 'ja-JP' | 
					? | 
| 中国語-中国 | 'zh-CN' | 
					? | 
| 韓国語-韓国 | 'ko-KR' | 
					? | 
| 英語-米国 | 'en-US' | 
					? | 
| 英語-英国 | 'en-GB' | 
					? | 
| ロシア語-ロシア | 'ru-RU' | 
					? | 
| ヒンディー語-インド | 'hi-IN' | 
					? | 
| アラビア語-サウジアラビア | 'ar-SA' | 
					? | 
| アラビア語-エジプト | 'ar-EG' | 
					? | 
言語コードに"u"を続ける形式で、langCode-u-ru-**ca-**のように記述します。
| 値 | 有効な値 | |
|---|---|---|
| nu | 番号方式 | 'arab', 'arabext', 'bali', 'beng', 'deva', 'fullwide', 'gujr', 'guru', 'hanidec', 'khmr', 'knda', 'laoo', 'latn', 'limb', 'mlym', 'mong', 'mymr', 'orya', 'tamldec', 'telu', 'thai', 'tibt' | 
| ca | カレンダー | 'buddhist', 'chinese', 'coptic', 'ethioaa', 'ethiopic', 'gregory', 'hebrew', 'indian', 'islamic', 'islamicc', 'iso8601', 'japanese', 'persian', 'roc' | 
| hc | 時間周期 | 'h11', 'h12', 'h23', 'h24' | 
| locales | 出力例 | 出力例 (era:'long') | 
				
|---|---|---|
'th-TH-u-nu-thai' | 
					? | ? | 
'en-GB-u-nu-thai' | 
					? | ? | 
'en-GB-u-nu-arab' | 
					? | ? | 
'en-GB-u-ca-islamic' | 
					? | ? | 
'en-GB-u-ca-japanese' | 
					? | ? | 
'ja-JP-u-ca-japanese' | 
					? | ? | 
Internet ExplorerとEdgeは、day部分を含む形式では元号が出力されません。javascript - 和暦で年を表すjavascriptは? - スタック・オーバーフロー
| options | 出力例 | 
|---|---|
{} | 
					? | 
{era:'long'} | 
					? | 
{era:'long',year:'numeric'} | 
					? | 
{era:'long',year:'numeric',month:'numeric'} | 
					? | 
{era:'long',year:'numeric',month:'numeric',day:'numeric'} | 
					? | 
| 分類 | 内容 | メソッド | 戻り値 | 
|---|---|---|---|
| 日付 | 年 | getFullYear() | 2桁の省略形ではない、世紀を含めた数値 (たとえば1998年は、"98"ではなく"1998")  | 
				
| 月 | getMonth() | 0 (1月) から11 (12月) まで ※0を起点として表されており、数値との対応に注意する  | 
				|
| 日 | getDate() | 1から31まで | |
| 曜日 | getDay() | 0 (日曜日) から6 (土曜日) まで | |
| 時刻 | 時 | getHours() | 0 (午前0時) から23 (午後11時) まで | 
| 分 | getMinutes() | 0から59まで | |
| 秒 | getSeconds() | 0から59まで | |
| ミリ秒 | getMilliseconds() | 0から999まで | 
これらのメソッド名をgetUTCXxのように「UTC」をつけた形式にすると、結果を世界時で取得できます。
var date = new Date( 0 ); date.toString(); // "Thu Jan 01 1970 09:00:00 GMT+0900" date.getFullYear(); // 1970 date.getMonth(); // 0 date.getMonth(); // 1 date.getDay(); // 4 new String( '日月火水木金土' ).charAt( date.getDay() ); // "木"
date.getTime()Date.getTime - JavaScript | MDN
getTime()は、Dateオブジェクトの基準日時 (1970/1/1 0:00:00) との差をミリ秒で表します。これは2つのDateオブジェクトを比較したり、時間差の計算をするのに使えます。
Dateオブジェクトは、場合によってはgetTime()により暗黙的に数値に変換されます。たとえば、
date.getTime();
とする代わりに
+date;
としても同じ結果が返されます。このことから、2つの時間の差を求めるには
date1.getTime() - date2.getTime();
ではなく、
date1 - date2;
としても同じです。ただし数値に加算すると文字列に変換されるため、その点には注意が必要です。
var date = new Date( '2000/1/1' ); date.getTime(); // 946652400000 -date; // -946652400000 0-date; // -946652400000 0+date; // "0Sat Jan 01 2000 00:00:00 GMT+0900"
get...で取得した値に加減算し、set...で設定し直します。
// 日付を1日進める date.setDate( date.getDate() + 1 ); // 時刻を1秒戻す date.setSeconds( date.getSeconds() - 1 );
| 分類 | 内容 | メソッド | 
|---|---|---|
| 日付 | 年 | setFullYear() | 
| 月 | setMonth() | |
| 日 | setDate() | |
| 時刻 | 時 | setHours() | 
| 分 | setMinutes() | |
| 秒 | setSeconds() | |
| ミリ秒 | setMilliseconds() | 
Dateオブジェクトは、内部的には1970年1月1日を基準とした時間で表されます。このことからUNIX時間と似通っていますが、Dateオブジェクトがミリ秒単位であることに対して、UNIX時間は秒単位で表されます。
var date = new Date( unixTimestamp * 1000 );
var unixTimestamp = Math.round( date.getTime() / 1000 );