Come posso impostare il fuso orario predefinito in node.js?

Come imposto il fuso orario predefinito in node.js?

Secondo questo thread di google group , puoi impostare la variabile di ambiente TZ prima di chiamare qualsiasi funzione di data. Appena testato e funziona.

> process.env.TZ = 'Europe/Amsterdam' 'Europe/Amsterdam' > d = new Date() Sat, 24 Mar 2012 05:50:39 GMT > d.toLocaleTimeString() '06:50:39' > ""+d 'Sat Mar 24 2012 06:50:39 GMT+0100 (CET)' 

Non è ansible modificare il fuso orario in un secondo momento, dato che a quel punto il nodo ha già letto la variabile di ambiente.

Un altro approccio che sembrava funzionare per me almeno in ambiente Linux è quello di eseguire l’applicazione Node.js in questo modo:

 env TZ='Europe/Amsterdam' node server.js 

Questo dovrebbe almeno garantire che il fuso orario sia impostato correttamente già dall’inizio.

Sfortunatamente, l’ impostazione di process.env.TZ non funziona molto bene , in pratica è indeterminato quando il cambiamento sarà efficace).

Quindi l’impostazione del fuso orario del sistema prima di avviare il nodo è l’unica opzione appropriata.

Tuttavia, se non è ansible farlo, dovrebbe essere ansible utilizzare il nodo-tempo come soluzione temporanea: ottenere i tempi in locale o in UTC e convertirli nel fuso orario desiderato. Vedi Come utilizzare l’offset del fuso orario in Nodejs? per dettagli.

La soluzione env TZ='Europe/Amsterdam' node server.js di @uhef funziona nei casi in cui l’app non funziona con il processo biforcuto, ma quando si lavora con il processo biforcato, specialmente quando si avvia l’app con uno strumento di costruzione come gulp , il comando gulp prenderà i valori di env, ma il processo creato da gulp not (la tua app).

Per risolvere questo, devi fare:

 $ export TZ="Europe/Amsterdam"; gulp myTask 

Questo imposterà la variabile di ambiente TZ per tutto il processo avviato nella console su cui stai lavorando, incluso tutto il processo di sequenze successive eseguito dopo il comando gulp nella stessa console senza la necessità di eseguirli con il prefisso export TZ="Europe/Amsterdam"; ancora.

Puoi prendere il fuso orario momento . Ti consente di impostare la tua posizione e si occupa anche dell’ora legale.

Ecco un esempio funzionante al 100% per ottenere il fuso orario personalizzato Date Time in NodeJs senza utilizzare alcun modulo esterno

  var nDate = new Date().toLocaleString('en-US', { timeZone: 'Asia/Calcutta' }); 

Ecco una risposta per coloro che distribuiscono un’applicazione Node.js su Amazon AWS Elastic Beanstalk . Non ho visto questo documentato da nessun’altra parte:

Sotto Configuration -> Software -> Environment Properties , imposta semplicemente la coppia di valori chiave TZ e il tuo fuso orario, ad esempio America/Los Angeles , e applica la modifica.

Puoi verificare l’effetto emettendo new Date().toString() nell’app Node e prestando attenzione al suffisso del fuso orario.

Imposta il fuso orario del server e utilizza la sincronizzazione NTP. Ecco una soluzione migliore per cambiare il tempo del server.

Per elencare i fusi orari

 timedatectl list-timezones 

Per impostare il fuso orario

 sudo timedatectl set-timezone America/New_York 

Verifica il fuso orario

 timedatectl 

So che questo thread è molto vecchio, ma penso che questo aiuterebbe chiunque sia arrivato qui da google come me.

In GAE Flex (NodeJs), puoi impostare la variabile di ambiente TZ (quella che gestisce tutti i fusi orari della data nell’app) nel file app.yaml, vi lascio qui un esempio:

app.yaml

 # [START env] env_variables: # Timezone TZ: America/Argentina/Buenos_Aires