Pergunta sobre data e fuso horário no Linux

3

Eu fiz o comando date e ele deu a seguinte saída

root@localhost:~$ date
Thu Dec 30 14:19:47 UTC 2010

Em seguida, modifiquei a data usando o comando date -s , que deu a seguinte saída

root@localhost:~$ date -s "12/30/2010 JST 14:19:47"
Thu Dec 30 05:19:47 UTC 2010

Percebi que o tempo mudou para 9 horas após a hora UTC para mostrar exatamente o horário do JST. Mas o fuso horário, como você pode ver, ainda está mostrando o UTC. Por que está mostrando a hora correta e o fuso horário incorreto?

Obrigado

    
por LinuxPenseur 31.12.2010 / 09:45

2 respostas

8

Isso ocorre porque seu sistema está configurado para usar o UTC (ou não tem fuso horário definido) e não o JST. O comando date aceitará o JST como um modificador de entrada, mas usará o padrão do sistema para exibi-lo. Se você quiser que seu sistema deseje que seu sistema exiba a hora no formato JST, você deve definir o fuso horário como JST

remova ou renomeie /etc/localtime e, em seguida, vincule o arquivo relevante em /usr/share/zoneinfo a /etc/localtime

cd /etc
mv localtime localtime.orig
ln -s /usr/share/zoneinfo/Japan /etc/localtime

Editar

Para responder ao seu comentário - O comando date precisa entender as informações de fuso horário fornecidas como parte do parâmetro date string de -s e o que fazer com ele. Se você examinar o código-fonte , verá que todas as abreviações comuns de fuso horário e seus deslocamentos do GMT estão definidas . Esta informação é então usada para definir a hora corretamente. Dependendo da versão do core-utils que você examinar, você encontrará as informações em lib / parse-datetime.c ou lib / getdate.c

    
por 03.01.2011 / 18:09
1

Basta definir o fuso horário corretamente e, em seguida, você poderá usar o comando de data "naturalmente".

export TZ=JST
    
por 31.12.2010 / 15:13