我有这样的日期字符串1 May 2010 To 15 Aug 2016
。我只想在我的函数上将其作为日期字符串检查,而不是继续执行函数。当我用new Date(value)
检查此字符串时它返回无效的日期。如何将其作为日期检查?
答案 0 :(得分:3)
我会使用js date library moment js。
var checkDate = function (str){
var dates = str.split("To");
var flag = true;
for(var i = 0; i < dates.length; i++) {
if (moment(dates[i]).isValid()) {
flag = false;
}
}
return flag;
}
我为此创造了一个小提琴
答案 1 :(得分:1)
var str = "1 May 2010 To 15 Aug 2016";
//First split string
var array = str.split("To");
//then check if both are dates
for(var i = 0; i < array.length; i++) {
if(isNaN(new Date(array[i]))) { //Checking date
alert(array[i]+ ' is not valid date');
}
}
答案 2 :(得分:1)
解析字符串时,应始终提供要解析的字符串格式。这可以使用ES5 每个方法非常简单地完成:
var isValid = '1 May 2010 To 15 Aug 2016'.split(' To ').every(function(s) {
return moment(s,'D MMM YYYY').isValid();
});
console.log(isValid);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.14.1/moment.js"></script>
如果箭头功能正常,则:
var isValid = '1 May 2010 To 15 Aug 2016'.split(' To ').every(s=>moment(s,'D MMM YYYY').isValid());
完成这项工作。
答案 3 :(得分:0)
var checkDate = function (str){
var dates = str.split("To");
for(var i = 0; i < dates.length; i++) {
if (moment(dates[i]).isValid()) {
return true;
} else {
return false;
}
}
}
我可以在任何地方的代码中使用此功能。