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

时间:2013-04-24 17:29:48

标签: javascript date

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

3 个答案:

答案 0 :(得分:18)

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

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

答案 1 :(得分:17)

在内部,toJSON()会调用toISOString(),如果可用,那么没有区别。

  

15.9.5.44 Date.prototype.toJSON(key)

     

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

     

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

     
      
  1. 设O是调用ToObject的结果,并将此值作为参数。

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

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

  6.   
  7. 让toISO成为使用参数“toISOString”调用O的[[Get]]内部方法的结果。

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

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

  12.   

答案 2 :(得分:2)

JSON日期格式遵循ISO 8601,这也是toISOString生成的。两种方法返回的值之间没有功能差异。