如何在JS中比较两个日期是否相等?

3

我有一个表单中的两个日期:

var date = Wed Oct 07 2015 19:48:08 GMT+0200 (Central European Daylight Time);

var dateOne = new Date(date);
var dateTwo = new Date();

if (dateOne == dateTwo )
    alert ("equals");
else{
    alert("not equal");
}

即使我将客户端网站的日期设置为2015年10月7日星期三19:48:08 GMT+0200(中欧夏令时),仍然会出现不相等的情况...

即使我这样做:

var data1 = new Date();
var data2 = new Date();



if (data1 == data2)
    alert ("equals");
else{
    alert("not equal");
}
< p >这里出现了不等于。我做错什么了吗?< /p >
3个回答

12

当你使用==比较对象时,它会检查它们是否是同一个对象,而不仅仅是相同的值。

你可以尝试获取它们之间的差异,以查看它是否为0:

if (data1-data2 === 0)
    alert ("equals");
else{
    alert("not equal");
}

3

这两个时间可能仅在毫秒级别上有所不同。如果您不需要那么高的精度,请在比较之前将毫秒数截断。

date1.setMilliseconds(0); date2.setMilliseconds(0);


在这种情况下,我如何将它们裁剪到毫秒?我只对以秒为精度比较日期和时间感兴趣... - randomuser1
我更新了我的回答。 - Maciej

2
每次调用 Date() 函数都会得到一个不同的日期,因为时间在流逝。如果您设置 date2 = date1,则它们才相等。该日期具有毫秒组件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接