比较从函数生成的日期对象和

时间:2015-04-10 14:20:41

标签: javascript date datetime

我正在尝试比较两个日期:

var date = new Date('Mon May 11 2000 00:00:00 GMT+0200 (CEST)');

var processedDate = new Date(new Date(date.setHours(23,59,59,999)).setDate(date.getDate() -1));

var otherDate = new Date('Wed May 10 2000 23:59:59:999 GMT+0200 (CEST)');

console.logging日期给出完全相同的输出,但是,以下语句不能解析为true:

if (otherDate === processedDate) {
    console.log('equal dates');
}

请参阅以下小提琴:

https://jsfiddle.net/mgvx613d/

2 个答案:

答案 0 :(得分:3)

你无法比较对象。请改为尝试:

if (otherDate.toString() === processedDate.toString()) {
    console.log('equal dates');
}

答案 1 :(得分:2)

简短回答:不能通过平等直接比较对象。来自2ality的更长答案:

  

对象具有唯一标识并通过引用进行比较:通过表达式(如构造函数或文字)创建的每个对象都被视为与其他对象不同;可以通过相等运算符(===)观察到的事实。该运算符通过引用比较对象:如果两个对象具有相同的标识,则它们只相等。它们是否具有相同的内容并不重要。

> {} === {}
false

> var obj = {};
> obj === obj
true

但是,您可以使用Date方法getTime()来比较两个日期的毫秒值:

if (otherDate.getTime() === processedDate.getTime()) {
  console.log('equal dates');
}