JavaScriptの日付形式

JavaScriptの日付形式

[30] JavaScriptの日時形式は、 ISO 8601 のプロファイルやミリ秒単位の Unix time など、いくつかあります。

仕様書

ISO 8601 のプロファイル

[2] >>1 の ECMAScript で規定されているのは、ISO 8601の日付形式のプロファイルです。

[4] toISOString はこの形式を採用しています。

[13] 日付は、

のいずれかの形式とします。ここで年は0000~9999、月は01~12、日は01~31となっています。 >>1

[17] 日の数の制約は明示されていませんが、ISO 8601 の制限を引き継ぐと解釈するのが妥当でしょう。

[18] 日付に続いて次のいずれかにより日時を表せます >>1。

[22] ここで時は00~24、分は00~59、秒は00~59となっています >>1。 秒の小数部も指定できますが、3桁固定とされています >>1。

[23] 時が24のとき分や秒の制約は明記されていませんが、 ISO 8601 の制限 (0でなければならない) を引き継ぐと解釈するのが妥当でしょうか。
[24] 閏秒は表せません。
[26] ISO 8601:2004 では認められていないようですが、月や日を省略しても時刻を指定できるようです。

[25] 日時には更に時間帯も指定できます。時間帯を指定する場合は Z か、 ±hh:mm の時差を使います。 >>1

[27] 時間帯がなければ地方時と解釈します >>1。

[28] 年の展開表現も認められていますが、その場合符号の後の年は6桁でなければなりません >>1。

[29] ISO 8601 同様、 -000000 は認めていないようです。 (0年は正)

歴史的な日時形式

[3] Date コンストラクターや Date.parse や toString, toDateString, toTimeString, toUTCString, toGMTString, lastModified では歴史的に色々な日付形式が使われてきました。 現在の ECMAScript 仕様でも実装依存とされています。

ロケール依存の日時形式

[5] toLocaleString、toLocaleDateString、 toLocaleTimeString はロケール依存かつ実装依存の日付形式となっています。

[6] ECMA-402 の API により細かく指定できます。

Date オブジェクト

[7] JavaScript の日付型は Date です。いくつかの API は Date を入出力に使っています。

[9] WebIDL にも Date 型があります。

数値としての日時

[8] JavaScript のプログラムでは、 しばしば日時は数値として表されます。

[10] WebIDL に DOMTimeStamp 型、 DOMHighResTimeStamp 型があります。

[11] Date が内部的に表しているのはミリ秒単位のUnix time (JavaScript時刻) です。 Date コンストラクターや valueOf メソッドで相互変換できます。

メモ