> Javascript比较2个日期

时间:2011-10-05 04:59:20

标签: php javascript jquery

我在比较日期时有这段代码

var startDate = jQuery("#startDate_field_id").val();
var endDate = jQuery("#endDate_field_id").val();
var startDateSplit = startDate.split("-");
var endDateSplit = endDate.split("-");
var start = new Date();
var end = new Date();
start.setFullYear( startDateSplit[0], startDateSplit[1], startDateSplit[2] );
end.setFullYear( endDateSplit[0], endDateSplit[1], endDateSplit[2] );

if( end < start ) {
 alert("End Date should be less than Start Date of the Event");
}

#startDate_field_id的值为 2011-10-05
白色$ endDate_field_id的值为 2011-10-04

您认为这不起作用的原因是什么。

任何帮助都将受到极大的赞赏和奖励。 谢谢! :)

5 个答案:

答案 0 :(得分:1)

我将使用UNIX纪元时间戳进行比较:

if (end.getTime() > start.getTime()) {
    alert('...');
}

答案 1 :(得分:1)

因为setFullYear方法月参数接受0..11,意味着9是10月。

为什么不使用

var start = new Date(startDate);
var end = new Date(endDate);

答案 2 :(得分:1)

var start = new Date(Number(startDateSplit[0]), Number(startDateSplit[1])-1, Number(startDateSplit[2]));
var end = new Date(Number(endDateSplit[0]), Number(endDateSplit[1])-1, Number(endDateSplit[2]));

或简单地说:

答案 3 :(得分:1)

我不确定我是否理解你的问题。

我想你要确保结束日期必须大于开始日期。

如果你改变if条件,你的代码将正常工作。我只是改变了警告信息以获得正确的含义

检查DEMO

答案 4 :(得分:1)

我认为您的第一个问题是您错误地使用了Date对象。您将三个参数传递给setFullYear()方法,该方法只接受一个参数,即4位数。

var start = new Date();
var end = new Date();
start.setFullYear( startDateSplit[0], startDateSplit[1], startDateSplit[2] );
end.setFullYear( endDateSplit[0], endDateSplit[1], endDateSplit[2] );

你可能想尝试这样的事情:

var start = new Date(startDateSplit[0], startDateSplit[1] - 1, startDateSplit[2])
var end = new Date(endDateSplit[0], endDateSplit[1] - 1, endDateSplit[2]);