34

JavaScriptの日付を次の形式で表示する方法を確認していましYYYY-MM-DDTHH:mm:ss.sssZ: それらの間に実際の違いはありますか?

4

3 に答える 3

34

便利な違いの 1 つは、日付が無効な場合に.toJSON()が出力することnullです。ただし、.toISOString()の動作はさまざまです。Firefox では文字列"Invalid Date"が出力されますが、Chrome では例外が発生します。

編集: Firefox の最近のバージョンでは、動作が chrome と同じになるように修正されています (例外が発生します)。ただし、.toJSON() と .toISOString() の違いは残ります。(null の出力と例外の発生)

于 2013-07-09T11:37:07.473 に答える
29

内部的には、利用可能な場合にtoJSON()呼び出すtoISOString()ため、違いはありません。

15.9.5.44 Date.prototype.toJSON (キー)

この関数は、JSON.stringify (15.12.3) で使用する Date オブジェクトの文字列表現を提供します。

toJSON メソッドが引数キーで呼び出されると、次の手順が実行されます。

  1. O を ToObject の呼び出しの結果とし、引数として this 値を指定します。

  2. tv を ToPrimitive(O、ヒント番号) とします。

  3. tv が Number で有限でない場合は、null を返します。

  4. toISO を、O の [[Get]] 内部メソッドを引数 "toISOString" で呼び出した結果とします。

  5. IsCallable(toISO) が false の場合、TypeError 例外をスローします。

  6. [[Call]] toISO の内部メソッドを this 値として O と空の引数リストで呼び出した結果を返します。

于 2013-04-24T17:35:56.460 に答える
2

JSON の日付形式は ISO 8601 に準拠しており、これも同様にtoISOString生成されます。どちらのメソッドによって返される値にも、機能上の違いはありません。

于 2013-04-24T17:33:13.510 に答える