我想区分 JS 中的有效日期对象和无效日期对象,但无法弄清楚如何:
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'
编写isValidDate
函数的任何想法?
- Ash 推荐
Date.parse
用于解析日期字符串,它提供了一种权威的方式来检查日期字符串是否有效。 - 如果可能的话,我更希望我的 API 接受一个 Date 实例并能够检查/断言它是否有效。Borgar 的解决方案可以做到这一点,但我需要跨浏览器对其进行测试。我也想知道是否有更优雅的方式。
- Ash 让我考虑根本不让我的 API 接受
Date
实例,这将最容易验证。 - Borgar 建议先测试一个
Date
实例,然后再测试它Date
的时间值。如果日期无效,则时间值为NaN
。我检查了ECMA-262并且这种行为符合标准,这正是我正在寻找的。