javascript - сравнить 2 даты - почему все логические операторы false?

136
15 февраля 2021, 04:50

Сравниваю 2 даты, всегда получаю false - почему???

currentDt = new Date();
currentDt.setHours(0,0,0,0);
reportDt = new Date(record.data.reportDt);
console.log('currentDt = ' + currentDt);
console.log('reportDt = ' + reportDt);
console.log(currentDt > reportDt);
console.log(currentDt < reportDt);
console.log(currentDt == reportDt);
console.log(currentDt === reportDt);

РЕЗУЛЬТАТ

currentDt = Sat Jun 15 2019 00:00:00 GMT+0300 (Russian Standart Time)
reportDt = Sat Jun 15 2019 00:00:00 GMT+0300 (Russian Standart Time)
false
false
false
false

ПОЧЕМУ??? Как их сравнить? Функция Ext.Date.format(reportDt, 'yyyy-mm-dd') тоже не отрабатывала, сравнивала только по числам, игнорируя месяц.

Answer 1

Потому что new Date(); создает объект. А объекты нельзя сравнивать вот так. Даже если они пустые, они всё равно разные и дадут false:

console.log( {} == {} ); 
console.log( {x: 1} == {x: 1} );

А в вашем случае, можно использовать .getTime() который возвращает количество миллисекунд, прошедших от 01.01.1970 до установленной даты.

let currentDt = new Date(); 
 
currentDt.setHours(0,0,0,0); 
 
let reportDt = new Date('Sat Jun 15 2019 00:00:00 GMT+0300'); 
 
console.log( typeof currentDt + ' / ' + typeof reportDt ); 
 
let x = currentDt.getTime(); 
let y = reportDt.getTime(); 
 
console.log('currentDt: ' + x + '\n reportDt: ' + y); 
console.log(x > y); 
console.log(x < y); 
console.log(x == y); 
console.log(x === y);

READ ALSO
Как использовать matches чтобы найти name?

Как использовать matches чтобы найти name?

Как использовать matches чтобы вернуло true ?

107
Как привести строку к массиву? Не используя метод split

Как привести строку к массиву? Не используя метод split

Допустим есть определенная строка слов, через запятую

102
Перезапись переменных в функциях JS

Перезапись переменных в функциях JS

Первый день изучаю JSЗадача: спарсить курс биткоина в долларах, спарсить курс доллара в рублях, перемножить значения

106
Сериализация формы с групповыми полями

Сериализация формы с групповыми полями

Мне нужно передать поля формы get параметром, при этом группы полей например:

109