在 JavaScript 中验证日期实例的有效性
确定 JavaScript 中日期实例的有效性可能具有挑战性。让我们探讨 “无效日期” 问题,并找到可靠检测无效 Date 对象的解决方案:
Date 对象是表示特定时刻的 JavaScript 构造。从无效日期字符串创建 Date 实例时会出现问题,如下例所示:
var d = new Date("foo");
此代码生成一个“无效日期”实例,该实例是 object 类型并继承自 Date 原型。但是,Object.prototype.toString.call(d) 返回“[object Date]”,并且 d instanceof Date 的计算结果为 true。
解决方案:
这里有一个检查有效 Date 实例的简单方法:
if (Object.prototype.toString.call(d) === "[object Date]") { if (isNaN(d.getTime())) { // Invalid Date } else { // Valid Date } } else { // Not a Date object }
此方法确保该实例是 Date 对象,并且它的时间值不是 NaN。如果任一条件失败,则 Date 实例被视为无效。
更新 [2018-05-31]:
对于来自外部上下文的 Date 对象不是担心,可以使用更简单的验证函数:
function isValidDate(d) { return d instanceof Date && !isNaN(d); }
注意[2021-02-01]:
需要注意的是,“无效日期”和“无效日期对象”之间是有区别的。这个答案的重点是验证日期实例,而不是日期输入字符串。
以上是如何可靠地验证 JavaScript 日期实例?的详细内容。更多信息请关注PHP中文网其他相关文章!