Supongamos que creo un evento de todo el día para el día de Navidad. Quiero que este evento sea el 25 de diciembre, independientemente de la zona horaria en la que se encuentre. Guardo la fecha del evento como "2023-12-25" en el servidor.
Cuando hago new Date("2023-12-25") en el navegador, se interpreta como una fecha UTC que no es lo que quiero, por ejemplo, si estoy en Nueva York y hago
new Date("2023-12-25") // Sun Dec 24 2023 19:00:00 GMT-0500 (Eastern Standard Time)Lo que significa que cuando voy a formatear el evento de todo el día, se formateará como el 24 de diciembre, que no es lo que quiero.
Comportamiento deseado:
// If in New York parseAllDayDate("2023-12-25") // Sun Dec 25 2023 00:00:00 GMT-0500 (Eastern Standard Time) // If in London parseAllDayDate("2023-12-25") // Mon Dec 25 2023 00:00:00 GMT+0000 (Greenwich Mean Time)Además, no sugiera dayjs o momentjs. Me gustaría hacer esto solo con JS Date.
Puedes probar esto
parseAllDayDate(dateString) { let dateStringSplit = dateString.split('-'); let date = new Date(); date.setUTCDate(dateStringSplit[2]); date.setUTCMonth(dateStringSplit[1]); date.setUTCFullYear(dateStringSplit[0]); return date; }