Inicializar la fecha de JavaScript en una zona horaria en particular

Harshit Jindal 12 octubre 2023
  1. Utilice los métodos Intl.DateTimeFormat y format() para inicializar la fecha de JavaScript en una zona horaria determinada
  2. Utilice el método toLocaleString() para inicializar la fecha de JavaScript en una zona horaria en particular
Inicializar la fecha de JavaScript en una zona horaria en particular

Este tutorial enseña cómo inicializar la fecha de JavaScript en una zona horaria en particular.

El objeto de fecha de JavaScript funciona con UTC internamente, pero muestra la salida de acuerdo con la hora local de la computadora operativa. El objeto de fecha no tiene ninguna noción de zonas horarias. No hay objetos de cadena declarados. Es solo una medida del número de milisegundos que han transcurrido desde 1970-01-01 00:00:00 UTC. Al generar la hora, automáticamente tiene en cuenta la zona horaria local de la computadora y se aplica a la representación interna. No funciona con diferentes zonas horarias. Entonces, necesitamos la ayuda de funciones y bibliotecas externas para realizar tales operaciones.

Utilice los métodos Intl.DateTimeFormat y format() para inicializar la fecha de JavaScript en una zona horaria determinada

El objeto JavaScript Intl es la ayuda para la API de internacionalización de JavaScript. Nos proporciona muchas funciones para la conversión de fecha / hora, cadenas y números. El objeto Intl utiliza DateTimeFormat para formatear cadenas de fecha y hora. Tiene un método de format que toma la fecha y la convierte a una zona horaria diferente utilizando la configuración regional y las opciones proporcionadas como argumento para el formateador. Este método formateará la fecha a la zona horaria requerida y la convertirá en una cadena.

El parámetro que toma la función format() es la fecha. Necesitamos los siguientes argumentos para la formación del objeto Intl.DateTimeFormat:

  1. locales: es un conjunto de cadenas que contienen etiquetas de idioma y local. Normalmente, es un parámetro opcional pero es necesario para nuestro propósito. Para cambiar la zona horaria, solo podemos especificar el código de idioma BCP y la zona horaria requerida.
  2. opciones: Es un objeto que se utiliza para especificar propiedades para realizar comparaciones. También es un parámetro opcional que se puede utilizar para especificar el estilo y las unidades de visualización. Algunas de las propiedades son second, minute, hour, day, month y year, etc.

Por ejemplo: podemos pasar un objeto de opciones como { hour: 'numeric', hour12: false, minute: 'numeric', timeZoneName: 'short'}.

function changeTimezone() {
  let date = new Date(Date.UTC(2021, 5, 28, 3, 0, 0));
  console.log('Date in India: ' + date);
  let formatter =
      new Intl.DateTimeFormat('en-US', {timeZone: 'America/Denver'});
  let usDate = formatter.format(date);
  console.log('Date in USA: ' + usDate);
}

Producción

Date in India: Mon Jun 28 2021 08:30:00 GMT+0530 (India Standard Time)
VM1504:7 Date in USA: 6/27/2021

En la función anterior, primero creamos un objeto Date usando el constructor Date(). Luego vamos y creamos un formateador usando Intl.DateTimeFormat especificando la configuración regional, es decir, la etiqueta de idioma BCP y la zona horaria a la que queremos convertir. Luego usamos este formateador para convertir la fecha a la zona horaria requerida.

Utilice el método toLocaleString() para inicializar la fecha de JavaScript en una zona horaria en particular

El método toLocaleString() es el más utilizado para cambiar la zona horaria, ya que es más fácil de usar y se puede llamar directamente en una fecha. Funciona de la misma manera que el Intl.DateTimeFormat. También toma la cadena de configuración regional y las opciones como argumentos y devuelve una cadena con fechas formateadas de acuerdo con ellas. La ventaja de este método es que, a diferencia del método anterior, convierte la hora de acuerdo con la zona horaria del país y la devuelve en la cadena.

function changeTimezone() {
  let date = new Date(Date.UTC(2021, 5, 28, 3, 0, 0));
  console.log('Date in India: ' + date);
  let usDate = date.toLocaleString('en-US', {timeZone: 'America/New_York'});
  console.log('Date in USA: ' + usDate);
}

Producción

Date in India: Mon Jun 28 2021 08:30:00 GMT+0530 (India Standard Time)
Date in USA: 6/27/2021, 11:00:00 PM

En la función anterior, primero creamos un objeto Date usando el constructor Date(). Llamamos a la función toLocaleString en la fecha que especifica la language tag y la timeZone y obtenemos la fecha / hora convertida a una zona horaria diferente.

Harshit Jindal avatar Harshit Jindal avatar

Harshit Jindal has done his Bachelors in Computer Science Engineering(2021) from DTU. He has always been a problem solver and now turned that into his profession. Currently working at M365 Cloud Security team(Torus) on Cloud Security Services and Datacenter Buildout Automation.

LinkedIn

Artículo relacionado - JavaScript DateTime