首页 >web前端 >js教程 >如何可靠地检测 JavaScript 中的无效日期实例?

如何可靠地检测 JavaScript 中的无效日期实例?

Linda Hamilton
Linda Hamilton原创
2024-12-10 15:04:11358浏览

How Can I Reliably Detect Invalid Date Instances in JavaScript?

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn