let a = new Date() a.setDate(1) <--- this set date to the first date of this month.Sin embargo
let b = new Date ('2020-02-15') b.setDate(1) b.toISOString() -> returns'2020-02-02T00:00:00.000Z'¿Que esta pasando?
Zonas horarias. La diferencia proviene del hecho de que está inicializando la fecha a con la hora actual y b a la medianoche, hora local, que (dependiendo de la hora del día en la que se encuentre) puede ser un día diferente cuando se representa en UTC. setDate() establece la parte del "día" del objeto Date en función de su configuración regional .
let a = new Date() a.setDate(1); let b = new Date('2022-02-14'); b.setDate(1); console.log("UTC:") console.log(a.toISOString()); console.log(b.toISOString()); console.log('Local timezone:') console.log(a.toLocaleString()) console.log(b.toLocaleString())El código anterior dejará de demostrar su punto en aproximadamente un mes, por lo que para el beneficio de People Of The Future™ aquí está el resultado actual:
UTC: 2022-02-01T17:11:37.114Z 2022-02-02T00:00:00.000Z Local timezone: 2/1/2022, 12:11:37 PM 2/1/2022, 7:00:00 PMCreo que tiene algo que ver con su zona horaria y configuración de tiempo
date.toISOString() siempre muestra la fecha como
AAAA-MM-DDTHH:mm:ss.sssZ
Donde Z significa UTC+0 TimeZone
intente agregar la hora y la zona horaria al construir la fecha
algo como
let date = new Date('2020-02-12T00:00:00.000+02:00');