2015-07-13 65 views
-2

我有一个JavaScript日期比较的问题。我可以在控制台输出对象,一切看起来都正确,但它们总是评估为false。JavaScript日期比较不起作用,即使在控制台中

var date1 = new Date('2013','01','01'); 
var date2 = new Date('2015','01','01'); 
console.log("date1=" + date1); 
console.log("date2=" + date2); 
console.log("date1 > date2" + date1 > date2); 
console.log("date1 < date2" + date1 < date2); 

>>date1=Fri Feb 01 2013 00:00:00 GMT-0500 (EST) 
>>date2=Sun Feb 01 2015 00:00:00 GMT-0500 (EST) 
>>false 
>>false 
+0

''date1> date2“+ date1> date2' ---这是什么意思?你将一个'date1'追加到一个字符串,然后比较复合字符串和另一个日期?这个不成立。 – zerkms

+0

恩,围绕比较的圆括号? –

+0

@Derek朕会功夫在'console.log'上下文中代替'+' – zerkms

回答

2

这是operator precedence一个问题:

操作优先级确定在运算符的计算顺序。首先评估具有更高优先级的运算符。

这使得与"date1 > date2"date1一个字符串,并将其与date2比较:

"date1 > date2" + date1 > date2 

这使得与"date1 > date2"字符串和date1 > date2比较:

"date1 > date2" + (date1 > date2) 

而且你不应该”直接比较日期对象。