JavaScript 中的无效日期实例检测
由于存在“无效日期”实例,验证 JavaScript 中的日期对象可能具有挑战性。这些对象看起来有效(instanceof Date 返回 true),但代表无效日期。本文探讨了检测此类实例的各种方法。
原始问题
提供的代码演示了该问题:
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'
推荐解决方案
1.使用 Date.parse() 进行验证
Date.parse 解析日期字符串并返回有效日期,如果字符串无效则返回 NaN。这可用于在创建 Date 对象之前验证日期字符串:
if (Date.parse("foo") === NaN) { // invalid date string }
2.测试 NaN 时间值
对于现有的 Date 实例,您可以测试时间值(getTime() 或 valueOf()):
if (isNaN(d.getTime())) { // invalid Date object }
此方法依赖于 ECMA -262 规范,规定无效的 Date 对象具有 NaN 时间值。
首选代码
根据这些建议,可以使用以下函数来验证 Date 实例:
function isValidDate(d) { return d instanceof Date && !isNaN(d); }
替代方法
如果您不关心来自外部 JS 上下文的 Date 对象,这种更简单的形式可能是首选:
function isValidDate(d) { return d instanceof Date && !isNaN(d); }
注意
此答案侧重于验证日期实例,但需要注意的是,它不涵盖日期输入本身的有效性(例如, 2013-13-32).
以上是如何可靠地检测 JavaScript 中的无效日期实例?的详细内容。更多信息请关注PHP中文网其他相关文章!