我想告诉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'
Run Code Online (Sandbox Code Playgroud)
编写isValidDate函数的任何想法?
Date.parse用于解析日期字符串,它提供了一种检查日期字符串是否有效的权威方法.Date实例,这最容易验证.Date实例,然后测试它Date的时间值.如果日期无效,则时间值为NaN.我用ECMA-262检查了这个行为是标准的,这正是我正在寻找的.我在网页上有一个恼人的错误:
date.GetMonth()不是函数
所以,我想我做错了什么.变量date不是类型的对象Date.如何在Javascript中检查数据类型?我试图添加一个if (date),但它不起作用.
function getFormatedDate(date) {
if (date) {
var month = date.GetMonth();
}
}
Run Code Online (Sandbox Code Playgroud)
所以,如果我想编写防御性代码并防止日期(不是一个)被格式化,我该怎么做?
谢谢!
更新:我不想检查日期的格式,但我想确保传递给方法的参数getFormatedDate()是类型Date.
我正在按照此示例验证日期字符串。
虽然下面的示例评估为true。
var date = new Date('12/21/2019');
console.log(date instanceof Date && !isNaN(date.valueOf()));
Run Code Online (Sandbox Code Playgroud)
这个下面的例子即使是一个不好的日期也算为true。
var date = new Date('02/31/2019');
console.log(date instanceof Date && !isNaN(date.valueOf()));
Run Code Online (Sandbox Code Playgroud)
有更好的方法吗?