JavaScript: programmazione fusi orari |  HTMLGoodies.com
Tempo di lettura: 4 minuti

Se le tue applicazioni includono informazioni su data e ora, ci sono buone probabilità che tu abbia a che fare con i fusi orari. In poche parole, ciò richiede l’aggiunta o la sottrazione di ore a un file Appuntamento valore per esprimerlo in un altro fuso orario. Sembra abbastanza semplice in superficie. Tuttavia, in pratica, è incredibilmente scoraggiante. Non solo è necessario determinare i fusi orari di entrambe le località, ma potrebbe anche essere necessario tenere conto dei cambiamenti di fuso orario dovuti a motivi politici e / o economici. Inoltre, probabilmente dovrai affrontare l’abominio noto come ora legale. Infine, come per aggiungere la beffa al danno, le strutture native di JavaScript per lavorare con i fusi orari sono alquanto irregolari, quindi potresti trovarti a dover eseguire tutti i tipi di calcoli complessi di data e ora da solo.

Sei già intimidito? Come la disse una volta il vecchio saggio Yoda: “Sarai. Sarai.” Scherzi a parte, questo tutorial mira a prepararti per la battaglia fornendo una vista a volo d’uccello del campo di battaglia e delle armi di cui avrai bisogno per avere successo.

Conosci il tuo nemico

In verità, i fusi orari sono una buona cosa; consentono a diverse regioni di vivere una giornata di 24 ore allo stesso modo. Senza fusi orari, da qualche parte sarebbe l’alba alle 19:00. Dividendo la Terra in 24 fusi orari uguali che seguono il sole, ognuno ottiene giorni e notti che si verificano intorno alla stessa ora (dell’orologio).

Ogni fuso orario è definito dal suo offset (differenza) rispetto al Coordinated Universal Time (UTC), lo standard mondiale dell’ora. L’ora UTC cambia di 1 ora avanti e indietro, corrispondente a una differenza di 1 ora nell’ora solare media per ogni 15 gradi est o ovest del primo meridiano (0 ° di longitudine) a Greenwich, un sobborgo di Londra, nel Regno Unito. Lo scostamento è espresso come UTC- o UTC + e il numero di ore e minuti.

Almeno, questa è l’idea generale. In realtà, i fusi orari sono stati disegnati per corrispondere ai confini interni e internazionali in modo da ottenere qualcosa che assomigli a questo:

A peggiorare le cose, molte regioni utilizzano l’ora legale (DST), che cambia il nome del fuso orario e l’ora durante il periodo dell’ora legale. Le aree che non utilizzano l’ora legale rimangono nel fuso orario standard tutto l’anno. Ad esempio, la California utilizza Pacific Daylight Time (PDT) durante il periodo DST ma Pacific Standard Time (PST) durante il resto dell’anno.

Ok, va male. Resisti; non abbiamo ancora finito.

Nomi e abbreviazioni del fuso orario locale

Per aggiungere carburante al fuoco, molte regioni implementano i propri nomi di fuso orario locale all’interno dello stesso fuso orario. Ad esempio, Miami, Florida, è 5 ore indietro rispetto a UTC (UTC-5) e il fuso orario standard è Eastern Standard Time (EST). Nel frattempo, L’Avana, il fuso orario locale di Cuba, si chiama Cuba Standard Time (CST), nonostante si trovi nello stesso fuso orario di UTC-5!

Un’altra fonte di confusione è che i nomi di alcuni fusi orari in luoghi completamente diversi utilizzano la stessa identica abbreviazione! Ad esempio, India Standard Time (IST) e Israel Standard Time (IST) hanno la stessa abbreviazione, nonostante abbiano offset UTC completamente diversi di UTC + 5:30 e UTC + 2: 00. (Ho già detto che alcuni offset di fuso orario includono mezze ore, ovvero UTC + 5: 30?)

Localizzazione del fuso orario in JavaScript

JavaScript Data oggetto rappresenta un singolo momento nel tempo in un formato indipendente dalla piattaforma. Data gli oggetti contengono un numero che rappresenta il numero di millisecondi trascorsi dalla mezzanotte del 1 gennaio 1970, UTC. Quindi, il valore del tempo nel cuore di a Data l’oggetto è UTC, mentre i metodi che recuperano la data e l’ora oi suoi componenti restituiscono tutti i valori nel fuso orario e offset locale (cioè il sistema host).

Esistono un paio di metodi notevoli che non localizzano automaticamente i risultati:

  1. Il prendi tempo() restituisce il numero di millisecondi dal 1970, ora UTC, senza localizzazione.
  2. Il toISOString () restituisce sempre la data in ora UTC, confermata dalla lettera “Z” alla fine della stringa. Sta per il fuso orario zero, a indicare che ha uno scostamento 0 dal Coordinated Universal Time (UTC), così come Zulu Time Zone, che è spesso usato nell’aviazione e nell’esercito come altro nome per UTC +0.

Possiamo vedere la localizzazione JS in azione creando una nuova data di “2020-01-01”. Senza dati temporali, JavaScript lo imposta a mezzanotte a Londra. Quando eseguo l’output della data memorizzata, viene presentato con il mio fuso orario locale di “GMT-0500”, che in realtà è l’inizio di Capodanno qui in Nord America:

Fusi orari in Javascript

GMT sta per Greenwich Mean Time, che è l’ora dell’orologio al Royal Observatory di Greenwich, nel Regno Unito, situata a longitudine 0. Il sistema GMT è diventato lo standard mondiale dell’ora fino al 1 gennaio 1972.

Greenwich-clock.jpg

Librerie di data / ora JavaScript da salvare!

Sono state create diverse biblioteche specializzate per far funzionare le date su più fusi orari. Questi includono:

  1. moment.js
  2. date-fns
  3. Luxon
  4. DayJS
  5. SM
  6. js-joda
  7. Spazio tempo

Moment.js è ancora ampiamente considerato come il re delle librerie di date JavaScript, nonostante sia stato designato come progetto legacy dai suoi manutentori nel 2020. Chi si solleverà per rivendicare la supremazia della libreria di date JS resta da vedere.

Conclusione

Una volta ho posto una domanda a una popolare community di sviluppatori su come progettare al meglio un’app che gestisse più fusi orari. La loro risposta: non farlo! Quindi, ovviamente, l’ho fatto. Da allora ho capito i loro terribili avvertimenti! Dopo aver acquisito una certa esperienza con la gestione del fuso orario, condividerò ciò che ho imparato per renderlo più facile per coloro che seguono. Negli articoli in arrivo, eseguiremo alcuni calcoli del fuso orario comuni utilizzando alcune delle librerie di cui sopra.


Rob Gravelle risiede a Ottawa, in Canada, ed è un guru dell’IT da oltre 20 anni. In quel periodo, Rob ha costruito sistemi per organizzazioni legate all’intelligence come Canada Border Services e varie attività commerciali. Nel suo tempo libero, Rob è diventato un artista musicale affermato con diversi CD e versioni digitali a suo merito.

Source link

Di Simone Serra

Web Designer Freelancer Realizzazione Siti Web Serra Simone Realizzo siti web, portali ed e-commerce con focus specifici sull’usabilità, l’impatto grafico, una facile gestione e soprattutto in grado di produrre conversioni visitatore-cliente. Elaboro siti internet, seguendo gli standard Web garantendo la massima compatibilità con tutti i devices. Sviluppo e-commerce personalizzati, multilingua, geolocalizzati per potervi mettere nelle migliori condizioni di vendita. Posiziono il tuo sito su Google per dare maggiore visibilità alla tua attività sui motori di ricerca con SEO di base o avanzato.