Tôi muốn nói sự khác biệt giữa các đối tượng ngày hợp lệ và không hợp lệ trong JS, nhưng không thể tìm ra cách:
var d = new Date("foo");
console.log(d.toString()); // shows 'Invalid Date'
console.log(typeof d); // shows 'object'
console.log(d instanceof Date); // shows 'true'
Bất kỳ ý tưởng để viết một isValidDate
chức năng?
- Ash khuyên
Date.parse
dùng để phân tích chuỗi ngày, đưa ra một cách có thẩm quyền để kiểm tra xem chuỗi ngày có hợp lệ không. - Điều tôi muốn, nếu có thể, là để API của tôi chấp nhận một thể hiện Ngày và để có thể kiểm tra / xác nhận xem nó có hợp lệ hay không. Giải pháp của Borgar thực hiện điều đó, nhưng tôi cần kiểm tra nó trên các trình duyệt. Tôi cũng tự hỏi liệu có một cách thanh lịch hơn.
- Ash khiến tôi cân nhắc việc không có API chấp nhận các
Date
trường hợp nào cả, điều này sẽ dễ xác thực nhất. - Borgar đề nghị thử nghiệm một
Date
ví dụ, và sau đó thử nghiệmDate
giá trị thời gian của. Nếu ngày không hợp lệ, giá trị thời gian làNaN
. Tôi đã kiểm tra với ECMA-262 và hành vi này là trong tiêu chuẩn, đó chính xác là những gì tôi đang tìm kiếm.
return ( Object.prototype.toString.call(d) === "[object Date]" && !isNaN(d.getTime()) );