var prevWeek = response.prevWeek // The date to compare.
, pickedDate = prevWeek.split("-");
var pickedDate = new Date(pickedDate[0], pickedDate[1], pickedDate[2]);
var todaysDate = new Date();
console.log(pickedDate); // logs Thu Apr 17 2014 00:00:00 GMT+0100 (GMT)
console.log(todaysDate); // logs Fri Nov 15 2013 18:30:13 GMT+0000 (GMT)
var compareValueOf = pickedDate.valueOf() < todaysDate.valueOf();
console.log(compare); // always returns false
var compare2 = pickedDate < todaysDate;
console.log(compare2); // always returns false
var compare3 = pickedDate.getTime() < todaysDate.getTime();
console.log(compare3); // always returns false
答案 0 :(得分:2)
那是因为picedDate小于todaysDate(2014年&gt; 2013年,而不是相反);)
答案 1 :(得分:1)
如果在2014年设置了pickedDate,而在2013年设置了今天的日期,那么pickDate可能不会比今天的日期小。
答案 2 :(得分:1)
我发现您的代码存在一些问题。
var prevWeek = response.prevWeek // The date to compare.
, pickedDate = prevWeek.split("-");
我认为respone.prevWeek
是一个人类可读的字符串,如2013年3月17日的“2013-03-17”。当你创建一个新的约会对象时,你会得到2013年4月17日,因为Date-object期望在0-11而不是1-12中获得月份。 (这一年没问题,今天也是如此)
var pickedDate = new Date(pickedDate[0], pickedDate[1], pickedDate[2]);
var todaysDate = new Date();
console.log(pickedDate); // logs Thu Apr 17 2014 00:00:00 GMT+0100 (GMT)
console.log(todaysDate); // logs Fri Nov 15 2013 18:30:13 GMT+0000 (GMT)
请注意,您现在在pickedDate中有时间为2014-04-18 00:00:00.000(包括微秒)和今天日期2013-11-15 18:30:13.324(包括微秒,确切的值不知道所以我做了起来)
var compareValueOf = pickedDate.valueOf() < todaysDate.valueOf();
console.log(compare); // always returns false
您可以在上面将值分配到compareValueOf
,但会记录compare
的值。但即使您确实记录了正确的变量,您也应该false
,因为2014年的日期不低于2013年的日期。
var compare2 = pickedDate < todaysDate;
console.log(compare2); // always returns false
比较日期对象的另一种方法,即可使用。但是,再次获得false
,因为您询问2014年的日期是否小于2013年的日期。事实并非如此。
var compare3 = pickedDate.getTime() < todaysDate.getTime();
console.log(compare3); // always returns false
与.valueOf()
之间使用getTime()
完全相同的另一个比较,因为false
给出完全相同的值(自1970年1月1日00:00:00 UTC以来的毫秒数)。再次获得todaysDate
,因为选择的日期是将来的。
如果您只想比较日期部分,可以通过运行todaysDate.setHours(0,0,0,0);
确保{{1}}的时间部分为零。请注意,有4个参数:小时,分钟,秒和微秒。