Date.toJSON()和Date.toISOstring()之间的区别

Alm*_*čić 21 javascript date

我正在检查如何以下列格式显示JavaScript日期:YYYY-MM-DDTHH:mm:ss.sssZ但是我看到了两种方法:.toJSON().toISOstring().它们之间有一些真正的区别吗?

Miz*_*tik 21

一个方便的区别是,如果您的日期无效,.toJSON()将输出null.但是,.toISOString()行为可能会有所不同.在firefox中,这会输出一个字符串"Invalid Date"但在chrome中会引发异常.

编辑:Firefox的最新版本已将行为修复为与chrome相同(引发异常).但是,.toJSON()和.toISOString()之间的区别仍然存在.(输出null与提高异常)


小智 20

在内部,如果它可用,则toJSON()呼叫toISOString(),因此没有区别.

15.9.5.44 Date.prototype.toJSON(key)

此函数提供Date对象的String表示形式,供JSON.stringify(15.12.3)使用.

使用参数键调用toJSON方法时,将执行以下步骤:

  1. 设O是调用ToObject的结果,给它作为参数的值.

  2. 让tv成为ToPrimitive(O,提示号码).

  3. 如果tv是一个数字并且不是有限的,则返回null.

  4. 设toISO是使用参数"toISOString"调用O的[[Get]]内部方法的结果.

  5. 如果IsCallable(toISO)为false,则抛出TypeError异常.

  6. 返回调用to [O [[Call]]内部方法的结果,其中O为此值和空参数列表.

  • 值得注意的是[`toJSON`是IE8 +](https://msdn.microsoft.com/en-US/library/cc907896(v = vs.94).aspx#requirementsTitleToggle)而[`toISOString`是IE9 +](https: //msdn.microsoft.com/en-us/library/ff925953(v=vs.94).aspx#requirementsTitleToggle) (4认同)