JavaScriptの日付を次の形式で表示する方法を確認していましたYYYY-MM-DDTHH:mm:ss.sssZ
: それらの間に実際の違いはありますか?
3 に答える
便利な違いの 1 つは、日付が無効な場合に.toJSON()
が出力することnull
です。ただし、.toISOString()
の動作はさまざまです。Firefox では文字列"Invalid Date"
が出力されますが、Chrome では例外が発生します。
編集: Firefox の最近のバージョンでは、動作が chrome と同じになるように修正されています (例外が発生します)。ただし、.toJSON() と .toISOString() の違いは残ります。(null の出力と例外の発生)
内部的には、利用可能な場合にtoJSON()
呼び出すtoISOString()
ため、違いはありません。
15.9.5.44 Date.prototype.toJSON (キー)
この関数は、JSON.stringify (15.12.3) で使用する Date オブジェクトの文字列表現を提供します。
toJSON メソッドが引数キーで呼び出されると、次の手順が実行されます。
O を ToObject の呼び出しの結果とし、引数として this 値を指定します。
tv を ToPrimitive(O、ヒント番号) とします。
tv が Number で有限でない場合は、null を返します。
toISO を、O の [[Get]] 内部メソッドを引数 "toISOString" で呼び出した結果とします。
IsCallable(toISO) が false の場合、TypeError 例外をスローします。
[[Call]] toISO の内部メソッドを this 値として O と空の引数リストで呼び出した結果を返します。
JSON の日付形式は ISO 8601 に準拠しており、これも同様にtoISOString
生成されます。どちらのメソッドによって返される値にも、機能上の違いはありません。