Como posso definir o fuso horário padrão em node.js?

Como faço para definir o fuso horário padrão em node.js?

De acordo com este segmento de grupo do google , você pode definir a variável de ambiente TZ antes de chamar qualquer function de data. Apenas testei e funciona.

> 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)' 

Você não pode mudar o fuso horário mais tarde, já que até lá o Node já leu a variável de ambiente.

Outra abordagem que pareceu funcionar para mim pelo menos no ambiente Linux é executar seu aplicativo Node.js da seguinte forma:

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

Isso deve garantir pelo menos que o fuso horário esteja definido corretamente desde o início.

Infelizmente, configurar process.env.TZ não funciona muito bem – basicamente é indeterminado quando a mudança será efetiva).

Portanto, definir o fuso horário do sistema antes de iniciar o nó é sua única opção adequada.

No entanto, se você não puder fazer isso, deverá ser possível usar o tempo de nó como uma solução alternativa: obtenha seus horários em horário local ou UTC e converta-os para o fuso horário desejado. Consulte Como usar o deslocamento de fuso horário no Nodejs? para detalhes.

A solução env TZ='Europe/Amsterdam' node server.js do @uhef funciona nos casos em que seu aplicativo não funciona com processo bifurcado, mas quando você está trabalhando com processo bifurcado, especialmente quando você inicia seu aplicativo com uma ferramenta de construção como gulp , o comando gulp vai pegar os valores de env, mas o processo criado pelo gulp não (seu app).

Para resolver isso, você precisa fazer:

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

Isto irá definir a variável de ambiente TZ para todo o processo iniciado no console em que você está trabalhando, incluído todo o processo subsequents executado após o comando gulp no mesmo console sem a necessidade de executá-los com o prefixo export TZ="Europe/Amsterdam"; novamente.

Aqui está um exemplo de trabalho de 100% para obter o fuso horário personalizado Date Time in NodeJs sem usar nenhum módulo externo

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

Você pode tirar um fuso horário . Ele permite que você defina sua localização e também cuida do horário de verão.

Aqui está uma resposta para aqueles que estão implantando um aplicativo Node.js no Amazon AWS Elastic Beanstalk . Eu não vi isso documentado em nenhum outro lugar:

Em Configuration -> Software -> Environment Properties , basta definir o par de valores de chaves TZ e seu fuso horário, por exemplo, America/Los Angeles e Aplicar a alteração.

Você pode verificar o efeito emitindo new Date().toString() em seu aplicativo Node e prestando atenção ao sufixo de fuso horário.

Defina o fuso horário do servidor e use a synchronization NTP. Aqui está uma solução melhor para alterar o horário do servidor.

Para listar fusos horários

 timedatectl list-timezones 

Para definir o fuso horário

 sudo timedatectl set-timezone America/New_York 

Verificar o fuso horário

 timedatectl 

Eu sei que esta discussão é muito antiga, mas acho que isso ajudaria qualquer um que chegou aqui do google como eu.

No GAE Flex (NodeJs), você pode definir a variável de ambiente TZ (aquela que gerencia todos os fusos horários de data no aplicativo) no arquivo app.yaml, deixo aqui um exemplo:

app.yaml

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