我正在尝试比较两个日期:
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');
}
请参阅以下小提琴:
答案 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');
}