Estoy iterando a través de una serie de elementos en php y accediendo a cada elemento a través de javascript. Quiero comparar fechas, pero para hacerlo tengo que sacar la información que necesito para hacer un nuevo objeto Date(). Así es como se ve la información en php:
"0": { . . . "dateInfo": { "date": "2021-11-19 00:00:000000", "timezone_type": 3, "timezone: "UTC" }, . . . },Estoy accediendo a estos desde una matriz en javascript haciendo:
array["0"]["dateInfo"]Traté de tomar solo el mes y la fecha del año y convertirlo en un nuevo objeto Date() haciendo esto:
var parts = array["0"]["dateInfo"]["date"].split('-'); var dateToComp = new Date(parts[0], parts[1], parts[2]); Pero cuando hice un console.log(dateToComp); decía que era una fecha inválida. Mi objetivo final es comparar esta fecha con la fecha de hoy para obtener algo a la moda:
var today = new Date() var parts = array["0"]["dateInfo"]["date"].split('-'); var dateToComp = new Date(parts[0], parts[1], parts[2]); if(dateToComp < today) { return 0; // in the past } else { return 1; // same day or future day }Espero que lo que estoy tratando de decir tenga sentido y cualquier ayuda sería muy apreciada. Gracias.
Pero cuando hice un console.log(dateToComp); decía que era una fecha inválida.
Porque parts[2] es "19 00:00:000000", que es un componente de fecha no válido. En su lugar, divida en cualquier carácter que no sea un dígito \D . Además, debe restar 1 del mes.
P.ej
let date = '2021-11-19 00:00:000000'; // Split on any non–digit character let [y, m, d] = date.split(/\D/); // Months are zero indexed // Treat input as local console.log(new Date(y, m-1, d).toString()); // Treat input as UTC console.log(new Date(Date.UTC(y, m-1, d)).toISOString());var dateToComp = new Date(parts[0], parts[1], parts[2].split(' ')[0]);
new Date(array["0"]["dateInfo"]["date"])Deberia trabajar