日期比较在javascript中失败

时间:2013-12-18 07:24:03

标签: javascript

我正在比较2个日期

1)2013-12-18

2)2013-12-4

我的代码正在考虑2013-12-4大于2013-12-18。

以下是我的代码DEMO:http://jsfiddle.net/tdVGL/

这是我的JavaScript代码:

var date = new Date();
var getFromDate = 
    parseInt(date.getFullYear()) + '-' + 
    parseInt(date.getMonth() + 1) + '-' + 
    parseInt(date.getDate() - 14);
var newDate = new Date();
var newD = parseInt(newDate.getDate());
var newM = parseInt(newDate.getMonth() + 1);
var newY = parseInt(newDate.getFullYear());
var myDate = parseInt(newY) + '-' + parseInt(newM) + '-' + parseInt(newD);
alert(getFromDate);
alert(myDate);
if (getFromDate < myDate) {
    alert("Sorry! You cannot add event on past dates.");
    return false;
} else {
    alert("This is the right day");
}

3 个答案:

答案 0 :(得分:2)

您比较的不是日期比较。这些值被视为字符串。看看这个比较。您需要将它们转换为有效的Date对象以进行正确的日期比较。

if (new Date(getFromDate) < new Date(myDate)) {
   alert("Sorry! You cannot add event on past dates.");
   return false;
}
else {
   alert("This is the right day");
}

Js Fiddle Demo

答案 1 :(得分:1)

正如Sachim所说,你只是在字符串上进行比较,而不是在Date对象上进行比较。

您可以简化代码(仅适用于Date对象)

var myDate     = new Date();                
var getFromDate = new Date(myDate);
getFromDate.setDate(myDate.getDate() -14);

alert(getFromDate);//of course, this is not in the format yyyy-mm-dd
alert(myDate);

if(getFromDate<myDate)
{
    alert("Sorry! You cannot add event on past dates.");
    return false;
}
else
{
     alert("This is the right day");
}

答案 2 :(得分:0)

您要比较的对象不是日期,它们是字符串

var getFromDate = parseInt(date.getFullYear())+'-'+parseInt(date.getMonth()+1)+'-'+parseInt(date.getDate()-14);

您可以将新日期实例化为

new Date(getFromDate)new Date(myDate)

然后进行比较