RangeError: invalid date
当尝试将无效日期转换为 ISO 日期字符串时,会发生 JavaScript 异常 "invalid date"。
消息
RangeError: Invalid time value (V8-based) RangeError: invalid date (Firefox) RangeError: Invalid Date (Safari)
错误类型
RangeError
哪里出错了?
您正在将无效日期值转换为 ISO 日期字符串。这通常通过以下三种方式之一发生:
- 调用
toISOString()方法 - 调用
toJSON()方法,该方法会隐式调用toISOString - 使用
JSON.stringify()将日期字符串化,该方法会隐式调用toJSON
当您尝试解析无效日期字符串或将时间戳设置为超出范围的值时,会产生无效日期。无效日期通常会导致所有日期方法返回 NaN 或其他特殊值。然而,此类日期没有有效的 ISO 字符串表示形式,因此当您尝试这样做时会抛出错误。
示例
无效案例
js
const invalid = new Date("nothing");
invalid.toISOString(); // RangeError: invalid date
invalid.toJSON(); // RangeError: invalid date
JSON.stringify({ date: invalid }); // RangeError: invalid date
然而,大多数其他方法返回特殊值
js
invalid.toString(); // "Invalid Date"
invalid.getDate(); // NaN
有关更多详细信息,请参阅 Date.parse() 文档。
有效情况
js
new Date("05 October 2011 14:48 UTC").toISOString(); // "2011-10-05T14:48:00.000Z"
new Date(1317826080).toISOString(); // "2011-10-05T14:48:00.000Z"