Tengo una matriz de objetos como este:
const days = [ { _id: 12312323 date : '30/12/2021' dateStatus : 'presence' }, ... ]y quiero convertir la propiedad de fecha de cadena a objeto de fecha de esta manera:
const convertToDateObject = (dateString: string): Date => { const dateParts: any[] = dateString.split("/"); return new Date(+dateParts[2], dateParts[1] - 1, +dateParts[0]); }; for (let i = 0; i < days.length; i++) { const d = days[i].date as string; days[i].date = convertToDateObject(d); } Pero esto devuelve esto convierte el valor de fecha a este formato 'Wed Dec 01 2021 00:00:00 GMT+0100 (Central European Standard Time)' en lugar de este formato 2021-11-30T23:00:00.000Z **.
De hecho, estoy perdido porque cuando el objeto dado no tiene la propiedad _id , el formato funciona correctamente y devuelve el formato deseado, pero cuando tiene la propiedad _id , me devuelve otro formato. ¿Por qué?
Pero esto devuelve esto convierte el valor de la fecha a este formato...
No, no lo hace. Le da un objeto Date , que no tiene "formato". Puede obtener la información de fecha/hora de ese objeto en hora local (aparentemente GMT+0100 donde se encuentra) o en UTC, según los métodos que utilice. Para obtener información del objeto en hora local, usa getHours , getMinutes , getSeconds (etc.), toString , toLocaleString y similares. Para obtener información del objeto en UTC, utilice getUTCHours , getUTCMinutes , getUTCSeconds (etc.), toUTCString y similares.
El constructor que está utilizando funciona en hora local. Es decir, construye un objeto Date para la medianoche (porque no está proporcionando horas, minutos, segundos o milisegundos) hora local en su zona horaria (porque ha usado new Date ). Si desea obtener la medianoche UTC, puede hacer new Date(Date.UTC(+dateParts[2], dateParts[1] - 1, +dateParts[0])); en cambio. La única diferencia es el momento en el tiempo que representa el objeto Date (la fecha dada a la medianoche hora local frente a la fecha dada a la medianoche UTC).