Estoy definiendo un nuevo objeto de Fecha: const date = new Date(2020, 09, 11); La documentación dice que el tiempo predeterminado para el constructor es: horas: 0, minutos: 0, segundos: 0... etc. Sin embargo, el resultado que obtengo es:
const date = new Date(2020, 09, 11); console.log(date); 2020-10-11T07:00:00.000Z
¿Por qué es la hora 7?
Cuando pongo lo siguiente en la consola:
const date2 = new Date(2020, 09, 11, -7) console.log(date2) 2020-10-11T00:00:00.000Z
Estoy un poco perdido aquí.
Esa Z al final representa la hora zulú = GMT. Dado que su diferencia es -7, supongo que se encuentra en la hora del Pacífico de EE. UU. Te está diciendo que TU medianoche es a las 7 am en el Reino Unido.
Javascript realiza un seguimiento interno del tiempo en UTC. El motivo de esto es simplificar la sincronización de tiempo global con otros usuarios en Internet.
Para mostrar su hora local, haga lo siguiente:
console.log(date.toLocaleString());
Consulte también esta respuesta a una pregunta relacionada: Cómo inicializar una fecha de JavaScript en una zona horaria particular
La hora mostrada es correcta, pero en una zona horaria diferente. La zona horaria estándar en la mayoría de los lenguajes de programación se llama UTC (Universal Time Coordinated), GMT (Greenwich Mean Time) o Zulu Time. Puede verlo por la "Z" al final de su cadena de tiempo. De acuerdo con la configuración local en su computadora, puede usar date.toLocaleString()
--> Pero incluso aquí pueden surgir problemas, cuando sus usuarios configuraron la hora de su computadora/navegador en una zona horaria diferente. Puede dejar que sus usuarios configuren sus zonas horarias por sí mismos y darle estos parámetros a toLocaleString()
de acuerdo con https://www.w3schools.com/jsref/jsref_tolocalestring.asp