RangeError: invalid date

Ngoại lệ JavaScript "invalid date" xảy ra khi một ngày không hợp lệ được cố gắng chuyển đổi thành chuỗi ngày ISO.

Thông báo

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

Loại lỗi

RangeError

Điều gì đã xảy ra?

Bạn đang chuyển đổi một giá trị ngày không hợp lệ thành chuỗi ngày ISO. Điều này thường xảy ra theo một trong ba cách:

  • Gọi phương thức toISOString()
  • Gọi phương thức toJSON(), ngầm gọi toISOString
  • Sử dụng JSON.stringify() để chuyển đổi ngày thành chuỗi, ngầm gọi toJSON

Ngày không hợp lệ được tạo ra khi bạn cố gắng phân tích một chuỗi ngày không hợp lệ, hoặc đặt dấu thời gian thành giá trị ngoài phạm vi. Các ngày không hợp lệ thường khiến tất cả các phương thức ngày trả về NaN hoặc các giá trị đặc biệt khác. Tuy nhiên, các ngày như vậy không có biểu diễn chuỗi ISO hợp lệ, vì vậy lỗi được ném khi bạn cố gắng thực hiện điều đó.

Ví dụ

Trường hợp không hợp lệ

js
const invalid = new Date("nothing");
invalid.toISOString(); // RangeError: invalid date
invalid.toJSON(); // RangeError: invalid date
JSON.stringify({ date: invalid }); // RangeError: invalid date

Tuy nhiên, hầu hết các phương thức khác trả về các giá trị đặc biệt:

js
invalid.toString(); // "Invalid Date"
invalid.getDate(); // NaN

Để biết thêm chi tiết, xem tài liệu Date.parse().

Trường hợp hợp lệ

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"

Xem thêm