Autor: BUILDER.COM
No hay duda de que el uso de scripts JavaScript puede mostrar fácilmente la hora local en una página web al ver directamente el reloj del usuario. Pero, ¿qué sucede si desea mostrar la hora en una región diferente, por ejemplo, si su sede está en otro país y desea ver la hora "local" en lugar de la hora local?
Para hacer esto, se deben realizar varios cálculos de tiempo para convertir la hora local a la hora de destino. Este artículo explica cómo realizar estos cálculos.
Paso 1:
El primer paso es obtener la hora local. En JavaScript, esto se puede hacer fácilmente inicializando un objeto Data().
// crea un objeto Fecha para la ubicación actual
d = new Date();
Al llamar al método getTime() del objeto Data(), puedes mostrar el número de milisegundos entre el 1 de enero de 1970 y la hora actual.
// convertir a msec desde el 1 de enero de 1970
localTime = d.getTime();
Paso 2:
A continuación, busque el valor de compensación de la hora local mediante el método getTimezoneOffset() del objeto Data(). De forma predeterminada, este método muestra el resultado del valor de compensación de zona horaria en minutos, por lo que este valor se convierte a milisegundos en el cálculo anterior.
// obtener compensación UTC local y convertir a msec
localOffset = d.getTimezoneOffset() * 60000
Tenga en cuenta que el valor de retorno negativo del método getTimezoneOffset() indica que la hora local es anterior a la hora estándar universal (UTC), mientras que el retorno positivo El valor indica la hora local después de la hora universal coordinada (UTC).
Nota: En caso de que te preguntes cómo obtuve el factor de multiplicación de 60.000, recuerda que 1.000 milisegundos equivalen a un segundo y un minuto equivale a 60 segundos. Por lo tanto, para convertir minutos a milisegundos, multiplique 60 por 1000, lo que equivale a 60.000.
El tercer paso
es agregar la hora local y el valor de compensación de la zona horaria local para obtener la hora estándar internacional (UTC) actual.
// obtener la hora UTC en msec
utc = localTime + localOffset
Aquí, la variable utc contiene la hora estándar internacional (UTC) actual. Sin embargo, este tiempo se expresa como el número de milisegundos desde el 1 de enero de 1970 hasta el presente. Quede así expresado por ahora, ya que aún quedan algunos cálculos por hacer.
El cuarto paso es
obtener la hora estándar internacional (UTC), luego obtener el valor de compensación horaria de la hora estándar internacional (UTC) de la ciudad de destino, convertirlo a milisegundos y agregar la hora estándar internacional (UTC).
// obtener y agregar el desplazamiento de hora UTC del destino
// por ejemplo, Bombay
// que es UTC + 5,5 horas
de desplazamiento = 5,5;
bombay = utc + (3600000
*offset);
factores, recuerde que 1000 milisegundos equivalen a un segundo y una hora equivale a 3600 segundos. Por lo tanto, para convertir horas a milisegundos, multiplica 3600 por 1000, lo que equivale a 3600000.
En este momento, la variable bombay contiene la hora local de Mumbai, India. Esta hora local se expresa en milisegundos desde el 1 de enero de 1970 hasta el presente. Evidentemente esto no tiene sentido, así que tendremos que hacer algunos cálculos.
El quinto paso
es inicializar un nuevo objeto Data() y llamar al método toLocalString() de este objeto. Convertimos el valor de tiempo calculado en el paso anterior en una cadena de fecha/hora que todos puedan entender.
// convierte el valor de msec a una cadena de fecha
nd = new Date(bombay);
document.writeln("La horade
Bombay es " + nd.toLocaleString() + "<br>");
Después deresumir
y comprender los pasos anteriores, echemos otro vistazo a este script (Listado A), que crea una función compacta y personalizada calcTime() que realiza todos los cálculos y devuelve un valor de tiempo.
Lista A
<html>
<head>
<script language="JavaScript">
// función para calcular la hora local
// en una ciudad diferente
// dada la compensación UTC de la ciudad
function calcTime(city, offset) {
// crear objeto Fecha para ubicación actual
d = nueva Fecha();
// convertir a msec
// agregar desplazamiento de zona horaria local
// obtener la hora UTC en msec
utc = d.getTime() + (d.getTimezoneOffset() * 60000);
// crea un nuevo objeto de fecha para una ciudad diferente
// usando el desplazamiento proporcionado
nd = new Date(utc + (3600000*offset));
// devuelve la hora como una cadena
return "La hora local en " + ciudad + " es " + nd.toLocaleString()
}
//
obtiene
la alerta de hora de Bombay(calcTime('Bombay', '+5.5'));
obtener alerta de hora de Singapur
(
calcTime
('Singapur', '+8
'));
//
obtener
alerta de hora de Londres(calcTime('Londres', '+1'));
/body>
</html>
Aquí, la función calcTime() acepta el nombre de una ciudad y su valor de compensación del Tiempo Universal Coordinado (UTC) (en horas). Luego realiza internamente todos los cálculos descritos anteriormente y devuelve una cadena que contiene la hora local de esta ciudad.
A continuación se muestran algunos ejemplos del resultado del Listado A.
La hora local de Mumbai es las 4:43:51 pm del lunes 1 de agosto de 2005.
La hora local de Singapur es las 7:13:51 pm del lunes 1 de agosto de 2005.
La hora local de Londres es el 1 de agosto de 2005, el lunes 12:13:51 pm.
La próxima vez que se siente a escribir un script de zona horaria para su página web, esperamos que este script le ahorre algo de tiempo. ¡Disfrutar! !