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

Comparing date object generated from a function and

本文关键字:日期 对象 函数 比较      更新时间:2023-09-26

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

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.log记录日期可以得到完全相同的输出,但是,以下语句不能解析为true:

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

参见以下小提琴:

https://jsfiddle.net/mgvx613d/

您无法比较Object。请尝试以下操作:

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

简单回答:不能通过等式直接比较对象。从凌晨2点开始的更长答案:

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

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

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

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