有什么简单的方法来检查一个值是否为有效日期,允许任何已知的日期格式。
例如,我有值10-11-2009、10/11/2009、2009-11-10T07:00:00+0000,这些值都应该被识别为日期值,而值200、10、350不应该被识别为日期值。如果可能的话,最简单的检查方法是什么?因为时间戳也是允许的。
有什么简单的方法来检查一个值是否为有效日期,允许任何已知的日期格式。
例如,我有值10-11-2009、10/11/2009、2009-11-10T07:00:00+0000,这些值都应该被识别为日期值,而值200、10、350不应该被识别为日期值。如果可能的话,最简单的检查方法是什么?因为时间戳也是允许的。
当前回答
好吧,这是一个老问题,但我在检查这里的解时找到了另一个解。For me工作检查函数getTime()是否存在于日期对象:
const checkDate = new Date(dateString);
if (typeof checkDate.getTime !== 'function') {
return;
}
其他回答
这是一个极简的版本。
var isDate = function (date) {
return!!(function(d){return(d!=='Invalid Date'&&!isNaN(d))})(new Date(date));
}
是否可以检查一个日期相关的函数是可用的对象,以发现它是否是一个日期对象?
就像
var l = new Date();
var isDate = (l.getDate !== undefined) ? true; false;
我认为最直接的解决办法是
Date.parse(yourDate) > 0 ? true : false;
如果不是有效日期,则为NaN, NaN不大于0。
new Date(Date) === '无效日期'只适用于Firefox和Chrome。IE8(我在我的机器上用于测试的那个)提供NaN。
正如已接受的答案所述,date .parse(date)也适用于数字。所以为了解决这个问题,你也可以检查它是不是一个数字(如果这是你想确认的事情)。
var parsedDate = Date.parse(date);
// You want to check again for !isNaN(parsedDate) here because Dates can be converted
// to numbers, but a failed Date parse will not.
if (isNaN(date) && !isNaN(parsedDate)) {
/* do your work */
}
我会这样做
var myDateStr= new Date("2015/5/2");
if( ! isNaN ( myDateStr.getMonth() )) {
console.log("Valid date");
}
else {
console.log("Invalid date");
}
在这里玩耍