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"