当比较Javascript中的date对象时,我发现即使比较相同的date也不会返回true。
var startDate1 = new Date("02/10/2012");
var startDate2 = new Date("01/10/2012");
var startDate3 = new Date("01/10/2012");
alert(startDate1>startDate2); // true
alert(startDate2==startDate3); //false
我怎么能比较这些日期的相等呢?我感兴趣的是使用JS的原生Date
对象,而不是任何第三方库,因为只使用第三方JS来比较日期是不合适的。
发布于 2011-09-30 14:47:36
这是因为在第二种情况下,将比较实际的date对象,并且两个对象永远不会彼此相等。强迫他们进行编号:
alert( +startDate2 == +startDate3 ); // true
如果您希望更明确地转换为number,请使用以下任一方法:
alert( startDate2.getTime() == startDate3.getTime() ); // true
或
alert( Number(startDate2) == Number(startDate3) ); // true
哦,对规范的引用:§11.9.3 The Abstract Equality Comparison Algorithm基本上是这样说的,当比较对象时,只有当它们引用相同的对象时,obj1 == obj2
才为真,否则结果为假。
发布于 2011-09-30 14:48:58
使用从纪元开始返回毫秒数(即一个数字)的getTime()
比较日期:
var startDate1 = new Date("02/10/2012");
var startDate2 = new Date("01/10/2012");
var startDate3 = new Date("01/10/2012");
alert(startDate1.getTime() > startDate2.getTime()); // true
alert(startDate2.getTime() == startDate3.getTime()); //true
还可以考虑使用Date
构造函数来获取显式的年/月/日数字,而不是依赖于字符串表示(参见:Date.parse())。请记住,JavaScript中的日期始终使用客户端(浏览器)时区表示。
发布于 2011-09-30 16:38:38
您不需要使用getTime方法-您可以从一个date对象中减去另一个date对象。它将返回毫秒差(如果第二个是较晚的日期,则返回负数)
var startDate1 = new Date("02/10/2012");
var startDate2 = new Date("01/10/2012");
var diff= (startDate1 -startDate2)
//如果日期具有相同的时间戳,则计算结果为0
https://stackoverflow.com/questions/7606798
复制相似问题