Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检查isDate返回的日期无效_Javascript_Jquery_Date - Fatal编程技术网

Javascript 检查isDate返回的日期无效

Javascript 检查isDate返回的日期无效,javascript,jquery,date,Javascript,Jquery,Date,我有这样的日期字符串2010年5月1日至2016年8月15日。我只想在我的函数中将其作为日期字符串进行检查,而不是继续执行函数。当我用新日期(值)检查此字符串时,其返回的无效日期。如何将其作为日期进行检查?var str=“2010年5月1日至2016年8月15日”; var str = "1 May 2010 To 15 Aug 2016"; //First split string var array = str.split("To"); //then check if both are

我有这样的日期字符串
2010年5月1日至2016年8月15日
。我只想在我的函数中将其作为日期字符串进行检查,而不是继续执行函数。当我用
新日期(值)
检查此字符串时,其返回的无效日期。如何将其作为日期进行检查?

var str=“2010年5月1日至2016年8月15日”;
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');
 }
}
//第一个拆分字符串 var数组=str.split(“To”); //然后检查两者是否都是日期 对于(var i=0;i
我会使用js日期库矩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;
}
var checkDate=函数(str){
风险值日期=str.split(“To”);
var标志=真;
对于(变量i=0;i
我已经为这个做了一把小提琴

var checkDate=函数(str){
风险值日期=str.split(“To”);
对于(变量i=0;i

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

解析字符串时,应始终提供要解析的字符串的格式。使用ES5 every方法可以非常简单地做到这一点:

var isValid='2010年5月1日至2016年8月15日'。拆分('To')。每个(函数){
返回力矩'D MMM YYYY')。isValid();
});
console.log(isValid)

有两个日期吗?2010年5月1日和2016年8月15日。你应该把它们分开并检查两个。灵感有两个日期,这些日期是你给出的还是(静态)的,还是来自某个地方的,比如dynamicI更改了你的函数,我更喜欢在我的代码中使用它。谢谢,看看我的答案。谢谢,伙计,这节省了我的时间!请不要那样做。阅读并遵循并始终提供要分析的字符串的格式。否则,将由解析器来猜测。它将返回返回有效日期的第一次尝试,不一定是“正确”日期。我已根据您的需要更改了我的函数。你需要这样做。请查收。在这里,您的代码没有机会检查数组的second部分。例如:想想“2001年5月1日至20a6年8月15日”一案。它会变成现实。但第二部分是无效的。检查我的函数,如果可以,则将其标记为已接受,因为它将帮助其他人。您可以使用
str.split('To')替换整个函数。every(s=>return moment(s).isValid()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;
        }
    }
}