我正在检查如何以下列格式显示JavaScript日期:YYYY-MM-DDTHH:mm:ss.sssZ
,但我看到了两种方法:.toJSON()和.toISOstring()。
它们之间有一些真正的区别吗?
答案 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方法时,将执行以下步骤:
设O是调用ToObject的结果,并将此值作为参数。
让tv成为ToPrimitive(O,提示号码)。
如果tv是一个数字并且不是有限的,则返回null。
让toISO成为使用参数“toISOString”调用O的[[Get]]内部方法的结果。
如果IsCallable(toISO)为false,则抛出TypeError异常。
- 醇>
返回调用to [O [[Call]]内部方法的结果,其中O为此值和空参数列表。
答案 2 :(得分:2)
JSON日期格式遵循ISO 8601,这也是toISOString
生成的。两种方法返回的值之间没有功能差异。