范围错误:无效日期

JavaScript 异常 "invalid date" 发生在尝试将无效日期转换为 ISO 日期字符串时。

消息

RangeError: Invalid time value (V8-based)
RangeError: invalid date (Firefox)
RangeError: Invalid Date (Safari)

错误类型

出了什么问题?

您正在将一个 无效日期 值转换为 ISO 日期字符串。这通常通过以下三种方式之一发生

当您尝试解析无效日期字符串或将时间戳设置为超出范围的值时,就会生成无效日期。无效日期通常会导致所有日期方法返回 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"

另请参阅