Inizializza la data JavaScript su un fuso orario particolare

Harshit Jindal 12 ottobre 2023
  1. Utilizzare i metodi Intl.DateTimeFormat e format() per inizializzare la data JavaScript su un particolare fuso orario
  2. Usa il metodo toLocaleString() per inizializzare la data JavaScript su un particolare fuso orario
Inizializza la data JavaScript su un fuso orario particolare

Questo tutorial insegna come inizializzare la data JavaScript su un particolare fuso orario.

L’oggetto data di JavaScript funziona internamente con UTC ma visualizza l’output in base all’ora locale del computer operativo. L’oggetto data non ha alcuna nozione di fusi orari. Non sono stati dichiarati oggetti stringa. È solo una misura del numero di millisecondi trascorsi da 1970-01-01 00:00:00 UTC. Durante l’output dell’ora, tiene automaticamente conto del fuso orario locale del computer e si applica alla rappresentazione interna. Non funziona con fusi orari diversi. Quindi, abbiamo bisogno dell’aiuto di funzioni e librerie esterne per eseguire tali operazioni.

Utilizzare i metodi Intl.DateTimeFormat e format() per inizializzare la data JavaScript su un particolare fuso orario

L’oggetto JavaScript Intl è l’aiuto per l’API di internazionalizzazione JavaScript. Ci fornisce molte funzioni per la conversione di data/ora, stringhe e numeri. L’oggetto Intl utilizza il DateTimeFormat per formattare le stringhe di data e ora. Questo ha un metodo format che prende la data e la converte in un fuso orario diverso usando la locale e le opzioni fornite come argomento al formattatore. Questo metodo formatterà la data nel fuso orario richiesto e la convertirà in una stringa.

Il parametro preso dalla funzione format() è la data. Abbiamo bisogno dei seguenti argomenti per la formazione dell’oggetto Intl.DateTimeFormat:

  1. locales: è un array di stringhe che contengono tag di lingua e locale. Normalmente è un parametro opzionale ma è necessario per il nostro scopo. Per cambiare il fuso orario possiamo semplicemente specificare il codice della lingua BCP e il fuso orario richiesto.
  2. options: è un oggetto utilizzato per specificare proprietà per eseguire confronti. È anche un parametro opzionale che può essere utilizzato per specificare lo stile e le unità di visualizzazione. Alcune delle proprietà sono second, minute, hour, day, month e year, ecc.

Ad esempio: possiamo passare un oggetto options come { 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);
}

Produzione

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

Nella funzione sopra, creiamo prima un oggetto Date usando il costruttore Date(). Quindi andiamo a creare un formattatore utilizzando Intl.DateTimeFormat specificando la localizzazione cioè il tag della lingua BCP e il timeZone in cui vogliamo convertire. Utilizziamo quindi questo formattatore per convertire la data nel fuso orario richiesto.

Usa il metodo toLocaleString() per inizializzare la data JavaScript su un particolare fuso orario

Il metodo toLocaleString() è il più comunemente usato per cambiare il fuso orario in quanto è più facile da usare e può essere chiamato direttamente in una data. Funziona allo stesso modo di Intl.DateTimeFormat . Prende anche la stringa locale e le opzioni come argomenti e restituisce una stringa con le date formattate in base ad esse. Il vantaggio di questo metodo è che, a differenza del metodo precedente, converte l’ora in base al fuso orario del paese e la restituisce nella stringa.

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);
}

Produzione

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

Nella funzione sopra, creiamo prima un oggetto Date usando il costruttore Date(). Chiamiamo la funzione toLocaleString sulla data specificando il langauge tag e il timeZone e otteniamo la data/ora convertita in un fuso orario diverso.

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

Articolo correlato - JavaScript DateTime