Tengo dos fechas date y meeting.date provenientes de dos API. Quiero comprobar si las fechas son iguales.
// date = "28.02.2022"; // meeting.date = "2022-02-08 14:30:00"; const firstDate = new Date(`${date.split(".").reverse().join("-")}`); const secondDate = new Date(`${meeting.date.split(" ")[0]}`) firstDate.setHours(0,0,0,0); secondDate.setHours(0,0,0,0); console.log(firstDate, secondDate, firstDate === secondDate);esto me registra
[Log] Mon Feb 28 2022 00:00:00 GMT+0100 (CET) – Mon Feb 28 2022 00:00:00 GMT+0100 (CET) – false¿Espero que eso sea cierto? Encontré la solución, configurando las horas a cero aquí en stackoverflow, pero diría que esto es gratuito, ya que no paso el tiempo de la Fecha. De todos modos, ¿qué estoy haciendo mal?
Está comparando los objetos Date en sí mismos, y nunca serán iguales a menos que sea el mismo "objeto" al que apuntan 2 variables diferentes, por ejemplo
const dateOne = dateTwo = new Date();Debe comparar las partes de la fecha como cadenas, por ejemplo
console.log( firstDate, secondDate, firstDate.toISOString().substr(0, 10) === secondDate.toISOString().substr(0, 10) );o compare las fechas como números (en milisegundos), que es la forma recomendada:
console.log( firstDate, secondDate, firstDate.getTime() === secondDate.getTime() );Lo que está haciendo aquí es comparar dos instancias diferentes (dos referencias diferentes) del objeto Date , lo que conduce a un resultado inesperado
Podría intentar comparar el milisegundo de estos usando getTime
const date = "28.02.2022"; const meeting = { date: "2022-02-28 14:30:00" } const firstDate = new Date(`${date.split(".").reverse().join("-")}`); const secondDate = new Date(`${meeting.date.split(" ")[0]}`) firstDate.setHours(0,0,0,0); secondDate.setHours(0,0,0,0); console.log(firstDate, secondDate, firstDate.getTime() === secondDate.getTime());Puede usar el método .getTime() para convertir ambas fechas a la cantidad de milisegundos desde la época de ECMAScript y luego compararlas.
firstDate.setHours(0,0,0,0).getTime(); secondDate.setHours(0,0,0,0).getTime(); console.log(firstDate, secondDate, firstDate === secondDate);