javascript - Reloj en diferentes zonas horarias
Estoy tratando de crear dos relojes en un sitio web que muestren dos horarios. Uno de Londres y el otro de Nueva York.
He podido crear un reloj que muestra la hora actual en mi computadora, pero no estoy seguro de cómo colocar una zona horaria en esto.
El código que tengo hasta ahora es:
<script type="text/javascript" language="javascript">
function renderTime() {
var currentTime = new Date();
var diem = "AM";
var h = currentTime.getHours();
var m = currentTime.getMinutes();
var s = currentTime.getSeconds();
if (h == 0) {
h = 12
} else if (h > 12) {
h = h - 12;
diem = "PM";
}
if (h < 10) {
h = "0" + h;
}
if (m < 10) {
m = "0" + m;
}
if (s < 10) {
s = "0" + s;
}
var myClock = document.getElementById ("clockDisplay");
myClock.textContent = h + ":" + m + ":" + s + " " + diem;
setTimeout ('renderTime()', 1000);
}
renderTime();
</script>
Esto se está aplicando a un estilo CSS que he creado para poder tener el reloj en una tipografía específica.
Respuesta #1
Para hacer esto correctamente, necesitarás una base de datos de zonas horarias, como una de las que mencioné aquí.
Todas las demás respuestas a esta pregunta cometen el error de pensar que un "zona horaria" y un "desfase de zona horaria" son lo mismo. No lo son. Por ejemplo, la zona horaria de Londres es Europe/London, que puede tener un desfase de +0 o +1 dependiendo de la época del año. La zona horaria de Nueva York es America/New_York, que puede tener un desfase de -5 o -4 basado en un conjunto de fechas completamente diferente al de Londres.
Podrías querer mirar moment-timezone:
moment().tz("America/New_York").format()
Respuesta #2
currentTime.getTimezoneOffset() te dará la diferencia horaria entre la Hora Media de Greenwich (GMT) y la hora local, en minutos.
Puedes usar el valor para calcular el tiempo en la zona horaria requerida.
