Я попытался сравнить два объекта даты в angular 4, но он всегда возвращал false
ниже мой фрагмент кода
CheckForHoliday(d: Date) {
let simpleDate = new Date(d.getFullYear(), d.getMonth(), d.getDay());
let hDate = new Date(2018, 9, 1);
console.info(simpleDate + "========= = " + hDate);
console.info(hDate === simpleDate);
return (hDate === simpleDate);
}
Результат такой, как показано ниже
Пн 1 октября 2018 г. 00:00:00 GMT + 0530 (стандартное время Индии) ========== Пн 1 октября 2018 г. 00:00:00 GMT + 0530 (стандартное время Индии)
ложный
Любая идея, почему он возвращает false, когда напечатанные значения выглядят одинаково?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете сделать date.getTime (), а затем сравнить два числа
Вы должны сравнить даты в Date Objects. Если вы вызовете метод getDate () для объекта Date, вы получите значение true.
hDate.getDate() === simpleDate.getDate() //=> returns true
Действительно пропустил это, моя ошибка, Date.toString () или Date.getTime () должны помочь;
Да или даже лучше, Date.getTime() (нет необходимости сравнивать строковые представления, когда вы можете сравнивать внутренние временные метки).
new Date вернет объект, и вы не можете сравнивать такие объекты. Попробуйте преобразовать их оба в строку, прежде чем сравнивать их.
Делай это так
CheckForHoliday(d: Date) {
let simpleDate = new Date(d.getFullYear(), d.getMonth(), d.getDay());
let hDate = new Date(2018, 9, 1);
console.info(simpleDate + "========= = " + hDate);
console.info(hDate === simpleDate);
return (hDate.toString() === simpleDate.toString());
}
Включите MomentJS в свое приложение, если можете, и используйте функцию isSame для сравнения.