来自DateTime Picker的JavaScript无效日期

时间:2017-12-04 12:38:03

标签: javascript datetime datetimepicker

我有一个函数,它会使用Bootstrap DateTime Picker的输入结果创建两个日期,我需要比较它们。

但我的第一个值(rtime)总是给出无效日期。我哪里错了?

注意:stime不可编辑,用户仅使用rtime字段的日期时间选择器。

var stime = '28/11/2017 09:18:52';
var rtime = '04/12/2017 10:16:34'; 

var lastReturn = new Date(rtime);
var lastOut = new Date(stime);

if (lastReturn >= lastOut) { 
  console.log("This date is after than the other!");
}

console.log(rtime);
console.log(stime);
console.log(lastReturn);
console.log(lastOut);

此结果显示LastOut是无效日期:

this result shows that LastOut is an invalid date

3 个答案:

答案 0 :(得分:0)

格式必须是月/日/年,而不是日/月/年

这就是为什么你会在28/11/2017 09:18:52获得invallid日期,因为没有第28个月。



console.log(new Date('28/11/2017 09:18:52'))
console.log(new Date('11/28/2017 09:18:52'))




答案 1 :(得分:0)

您选择的日期可能是月/日/年。但您的预计日期是日/月/年。例如,日期04/12/2017将于4月12日而不是12月4日返回。您可以在字符串上使用正则表达式进行替换,并使其格式正确。

请检查此代码段:

var stime = "28/11/2017 09:18:52" //$("#movesend").val();
var rtime = "04/12/2017 10:16:34" //$("#moveretorna").val(); 

function parseDate(dateString) {
    return dateString.replace( /(\d{2})\/(\d{2})\/(\d{4})/, "$2/$1/$3");
}

var lastReturn= new Date(parseDate(rtime));
var lastOut= new Date(parseDate(stime));

if(lastReturn>= lastOut)
{ 
   console.log("This date is after than the other!");
}

console.log(stime);
console.log(rtime);
console.log(lastReturn);
console.log(lastOut);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

答案 2 :(得分:0)

您需要将日期从DD/MM/YYYY HH:MM:SS格式转换为MM/DD/YYYY HH:MM:SS格式。

要进行转换,您可以使用string#replace

&#13;
&#13;
var stime = '28/11/2017 09:18:52';
var rtime = '04/12/2017 10:16:34'; 

stime = stime.replace(/(..)\/(..)\/(.*)/, '$2/$1/$3');
rtime = rtime.replace(/(..)\/(..)\/(.*)/, '$2/$1/$3');

var lastReturn = new Date(rtime);
var lastOut = new Date(stime);

if (lastReturn >= lastOut) { 
  console.log("This date is after than the other!");
}

console.log(rtime);
console.log(stime);
console.log(lastReturn);
console.log(lastOut);
&#13;
&#13;
&#13;