弄清楚为什么Date.parse()不等于比较日期

时间:2014-08-06 03:53:11

标签: javascript date

当我将到达日期与假期进行比较时,他们并不相同,我不知道为什么。在控制台中,两个日期显示相同。任何想法为什么会这样? (使用Date.js)。

var orderShip1 = Date.today(); //date it ships
var arriveDate1 = orderShip1.addDays(3); //first day it could arrive

var holiday = Date.parse('8/8/2014');

console.log(arriveDate1); // Fri Aug 08 2014 00:00:00 GMT-0400 (EDT) 
console.log(holiday);     // Fri Aug 08 2014 00:00:00 GMT-0400 (EDT) 

if (arriveDate1 === holiday) {

    orderShip1.addDays(1);
    //arriveDate1 = orderShip1.addDays(1);   
}

2 个答案:

答案 0 :(得分:1)

这是因为当您使用=====运算符进行检查时,Javascript会通过引用执行检查。除非它们被声明为holiday = arriveDate1,否则这两个对象将永远不会相等,因为它们不会共享相同的内存引用。

示例:

a = {foo: 'hello'};
b = {foo: 'hello'};
a == b;
> false

您应该使用.toISOString或一元运算符+执行检查,以毫秒为单位转换数据对象,如下所示:

// this
if (arriveDate1.toISOString() == holiday.toISOString()) ...
// or this
if (+arriveDate1 == +holiday) ...

答案 1 :(得分:0)

三等号符号测试对象是否相同,即它们是同一个对象。尝试双等于。