检查isDate返回无效日期

时间:2016-08-25 03:45:26

标签: javascript jquery date

我有这样的日期字符串1 May 2010 To 15 Aug 2016。我只想在我的函数上将其作为日期字符串检查,而不是继续执行函数。当我用new Date(value)检查此字符串时它返回无效的日期。如何将其作为日期检查?

4 个答案:

答案 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;
}

我为此创造了一个小提琴

https://jsfiddle.net/Refatrafi/wj5zc75e/

答案 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;
        }
    }
}

我可以在任何地方的代码中使用此功能。