>Javascript比较2个日期

>Javascript Comparing 2 dates

本文关键字:2个 日期 比较 Javascript gt      更新时间:2023-09-26

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

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
white$endDate_field_id的值为2011-10-04

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

任何帮助都将得到极大的感谢和奖励。谢谢!:(

我认为您的第一个问题是使用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]);

我会使用UNIX epoch时间戳进行比较:

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

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

为什么不使用

var start = new Date(startDate);
var end = new Date(endDate);
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]));

或者简单地说:

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

我猜您希望确保结束日期必须大于开始日期

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

查看此演示。