为了账号安全,请及时绑定邮箱和手机立即绑定

JavaScript日期对象比较

JavaScript日期对象比较

慕斯王 2019-09-24 15:31:06
当比较Javascript中的日期对象时,我发现即使比较同一日期也不会返回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我如何比较这些日期的相等性?我对利用DateJS 的本机对象(而不是任何第三方库)感兴趣,因为它不适合仅使用第三方JS来比较日期。
查看完整描述

3 回答

?
千万里不及你

TA贡献1784条经验 获得超9个赞

这是因为在第二种情况下,将比较实际的日期对象,并且两个对象永远不会相等。强迫他们编号:


 alert( +startDate2 == +startDate3 ); // true

如果要更明确地转换为数字,请使用以下任一方法:


 alert( startDate2.getTime() == startDate3.getTime() ); // true

要么


 alert( Number(startDate2) == Number(startDate3) ); // true

哦,是对规范的引用:§11.9.3 在比较对象时基本上说的抽象平等比较算法,obj1 == obj2仅当它们引用相同的对象时才为true,否则结果为false。


查看完整回答
反对 回复 2019-09-24
?
守候你守候我

TA贡献1802条经验 获得超10个赞

使用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中的日期始终使用客户端(浏览器)时区表示。


查看完整回答
反对 回复 2019-09-24
?
MMTTMM

TA贡献1869条经验 获得超4个赞

您不需要使用getTime方法-您可以从另一个日期对象中减去一个日期对象。它将返回毫秒差(负数,如果第二个是较晚的日期,则为负数)


var startDate1 = new Date("02/10/2012");

var startDate2 = new Date("01/10/2012");


var diff= (startDate1 -startDate2)

//如果日期具有相同的时间戳,则计算为0


查看完整回答
反对 回复 2019-09-24
  • 3 回答
  • 0 关注
  • 353 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信