RangeError: invalid date

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

消息

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

错误类型

RangeError

哪里出错了?

您正在将无效日期值转换为 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"

另见