Avatar ·

如何判断 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`,但这种方法不稳定。如何正确且可靠地检查日期是否无效?