我想告诉 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 ,这种行为符合标准,这正是我正在寻找的。
原文由 orip 发布,翻译遵循 CC BY-SA 4.0 许可协议
这是我的做法:
更新 [2018-05-31] :如果您不关心来自其他 JS 上下文(外部窗口、框架或 iframe)的 Date 对象,则可能首选这种更简单的形式:
更新 [2021-02-01] :请注意,“无效日期”(
2013-13-32
)和“无效日期 _对象_”(new Date('foo')
)之间存在根本区别。此答案 不 处理验证日期输入,仅当 Date 实例有效时。