const date = new Date(2022, 4, 18, 16, 50);¿Por qué esto devuelve el tiempo reducido en tres horas?
Obtengo este "2022-05-18T13:50:00.000Z" en lugar de este "2022-05-18T16:50:00.000Z" que esperaba obtener cuando imprimo esto en la consola usando console.log(date) .
¿Por qué esto devuelve el tiempo reducido en tres horas?
No lo hace, te da exactamente la hora que pediste, en tu hora local. Pero luego obtienes una cadena de una manera que te da una cadena en UTC, no en la hora local (la Z al final te dice que es UTC). Aparentemente, hay una diferencia de tres horas a partir de esa fecha/hora entre su zona horaria local y UTC.
Si desea trabajar en la hora local, use toLocaleString para obtener una cadena formateada de acuerdo con su configuración regional actual y usando su zona horaria. Si desea una cadena como la que obtuvo, pero en su zona horaria local, que yo sepa, debe construirla usted mismo.
Si quiere trabajar en UTC, construya la fecha usando la función UTC : new Date(Date.UTC(2022, 4, 18, 16, 50));
es debido a su zona horaria! por ejemplo:
let d = new Date(2022, 4, 18, 16, 50); d.toLocaleString('en-US', { timeZone: 'America/New_York' });Cuando llame al constructor Date() con componentes individuales, los interpretará en su hora local. Consulte el punto 5 en esta página de documentación de MDN .
Pero cuando imprime int sin toLocaleString() , devolverá la hora UTC en su lugar. Dependiendo de tu zona horaria, está más o menos lejos de lo que has ingresado.