0
   alert(date2);//Sat Oct 29 0112 00:00:00 GMT+0100 (GMT Daylight Time) 
   alert(date1);//Fri Oct 12 2012 00:00:00 GMT+0100 (GMT Daylight Time)

if (date1.getTime()<date2.getTime()) {
     alert('your date can not be earlier than today.');
}

我的问题是为什么我没有看到警报?有什么不对吗?

编辑:

var today = new Date();
date2 = new Date(today.getYear(), today.getMonth(), today.getDate());

为什么这个年份显示为 0112?

4

5 回答 5

3

您的日期 1 在 2012 年,而您的 date2 在 112 年,您测试 date1 是否低于 date2。2012 年优于 112 年,所以这里没有错

于 2012-10-29T13:25:44.933 回答
3

首先,您将两个日期拆分为其月、日和年的不同值。您可以使用月份数组来找出月份的数字。然后:

var date1 = new Date;
var date2 = new Date;
date1.setDate(29);
date1.setMonth(10);
date1.setFullYear(2012);

date2.setDate(12);
date2.setMonth(10);
date2.setFullYear(2012);

if(date1>date2)
alert('Date1 is greater');
else
alert('Date2 is greater');
于 2012-10-29T13:31:44.490 回答
2

使用getFullYear(),不使用getYear()

在某些实现中,getYear() 返回自 1900 年以来的年数。这就是为什么您获得 112 年的原因。

于 2012-10-29T13:33:49.867 回答
0

那么日期 1 是 2012 年,日期 2 是 0112 年,所以日期 2 早于日期 1,因此您没有看到警报。

于 2012-10-29T13:26:27.823 回答
0

date2 的年份是 0112,date1 的年份是 2012

于 2012-10-29T13:26:51.373 回答