如何判断 JavaScript 中的 Date 对象包含无效日期?
大家好!我是 JavaScript 新手,在处理日期时遇到了问题。我需要解析可能包含有效日期(例如 "2024-10-15")和垃圾数据(例如 "abc" 或 "32.13.2024")的字符串。我使用 `new Date()` 构造函数,但它的行为很奇怪。
示例:
```javascript
let date1 = new Date("2024-10-15"); // 有效
let date2 = new Date("abc"); // 也创建了对象!
```
问题在于 `new Date("abc")` 不会抛出错误,而是创建一个内部值为 `NaN` 的 Date 对象。当我尝试通过 `console.log` 输出时,看到的是 `Invalid Date`。但我如何以编程方式检查日期是否无效?`typeof` 方法显示 "object",而 `instanceof Date` 对垃圾数据也返回 `true`。
我尝试过与 `NaN` 比较——不起作用,因为 `NaN !== NaN`。我使用了 `isNaN(date1)`——它对有效日期返回 `false`,对无效日期返回 `true`,但这种方法不稳定。如何正确且可靠地检查日期是否无效?