Hora actual en otra ubicación/zona horaria [JavaScript]

Este artículo demostrará cómo obtener la hora actual en otra ubicación/zona horaria en Javascript, con solo una línea de código.

La forma más sencilla de usar JavaScript puro

La siguiente función convierte una fecha dada a una zona horaria diferente y contiene solo 1 línea de código.

function timezoneConvert(date, tzString) {
    return new Date((typeof date === "string" ? new Date(date) : date).toLocaleString("en-US", {timeZone: tzString}));   
}

Esta función espera:

  • Una fecha, ya sea como objeto Fecha o cadena
  • Una cadena que contiene el nombre de la zona horaria a la que convertir

Esta función funciona creando un nuevo objeto Fecha en la zona horaria requerida a partir del objeto Fecha entrante, convirtiendo la fecha entrante de una cadena si es necesario.

Para usarlo para obtener la hora actual en otra ubicación, simplemente debe pasarle un nuevo objeto Fecha, que por defecto es la hora actual:

var currentTime = new Date();
var currentTimeInAdelaide = timezoneConvert(currentTime, "Australia/Adelaide") 
console.log(currentTimeInAdelaide.toLocaleString());

Para convertir una fecha/hora específica, se puede pasar una cadena:

var convertedDate = timezoneConvert("2022/04/25 09:30:00 +0000", "Australia/Adelaide") 
console.log(convertedDate.toLocaleString());

Objetos de fecha de JavaScript

El código anterior utiliza objetos de fecha de JavaScript:objetos especiales que se pueden asignar a variables para representar fechas. Los objetos de fecha incluyen los detalles específicos de un momento en el tiempo, incluidos:

  • La fecha
  • La hora
  • La zona horaria

El objeto Fecha también incluye métodos para recuperar la hora UTC para ese momento específico y métodos para recuperar el desplazamiento de la zona horaria. Esto hace que el objeto Date sea una forma versátil de manejar fechas y horas.

Uso de Moment.js

Sin embargo, hay una manera más fácil. Moment.js es una biblioteca de JavaScript que hace que manejar fechas, horas y zonas horarias, así como intervalos de tiempo, sea increíblemente fácil.

Convertir una zona horaria en Moment.js es tan simple como usar el módulo Zona horaria de Moment:

var timeInNewYork = moment.tz("2033-05-01 12:30", "America/New_York");

¡Almacena todo como UTC!

Si está almacenando fechas y horas en una base de datos o archivo para su posterior recuperación, vale la pena almacenar todo como UTC y luego convertirlo a la zona horaria de los usuarios cuando se muestra la información. Esto elimina cualquier posibilidad de ambigüedad o confusión, y significa que su aplicación será precisa sin importar dónde se encuentre el usuario. Esto es especialmente importante para las aplicaciones web en las que puede haber personas que inician sesión desde todo el mundo e interactúan entre sí.