Quería saber si un objeto de fecha creado en cualquier momento difiere según las zonas horarias o no. Intenté esto ejecutando new Date().getTime() una vez para IST e inmediatamente otra vez configurando la zona horaria de mi PC en GMT. Los valores resultantes son:
Una diferencia de alrededor de 8000 milisegundos
A partir de esto, parece que los objetos de fecha y hora creados en el mismo momento son exactamente iguales sin importar en qué zona horaria se creen. Sugiera si este entendimiento es correcto o si hay algo más.
Estás bien. Dos objetos de fecha y hora diferentes creados en el mismo momento son iguales sin importar la zona horaria.
Se pueden formatear a su representación de zona horaria correspondiente usando javascript.
Una cosa importante a tener en cuenta es que el objeto de fecha y hora creado utiliza la configuración de fecha y hora del sistema para encontrar la hora correcta. Si las configuraciones de fecha y hora del sistema son correctas y están sincronizadas, entonces el objeto de fecha y hora creado en el navegador será correcto y coincidirá con la hora del sistema en el momento de crear ese objeto.
Esto se detalla en la especificación de JavaScript: https://tc39.es/ecma262/#sec-date-objects .
Hay más información en los documentos de MDN Date.getTime() :
El método getTime() devuelve el número de milisegundos* desde la época de Unix.
*JavaScript usa milisegundos como unidad de medida, mientras que Unix Time está en segundos.
getTime() siempre usa UTC para la representación del tiempo. Por ejemplo, un navegador de cliente en una zona horaria, getTime() será igual que un navegador de cliente en cualquier otra zona horaria.
Por lo tanto, new Date().getTime()
siempre devolverá la cantidad de milisegundos desde 1970-01-01 00:00:00 UTC, independientemente de la configuración de la zona horaria del cliente/máquina.