我有一个函数,它会使用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
是无效日期:
答案 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
。
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;