O comando date
, como quase todos os programas, depende da biblioteca padrão para acessar dados de fuso horário. No Linux (exceto para alguns sistemas embarcados) e * BSD, a biblioteca padrão determina o fuso horário atual do conteúdo de /etc/localtime
.
Parece que no seu sistema, /etc/localtime
não contém o que parece conter. Como Stéphane Chazelas e derobert , eu strongmente suspeite que o arquivo /usr/share/zoneinfo/Etc/UTC
, que /etc/localtime
é um link simbólico, contenha informações incorretas, provavelmente porque alguém que não sabia o que estava fazendo tentou alterar o fuso horário do sistema e acabou substituindo um arquivo do sistema.
Recomendo a reinstalação das informações de fuso horário para garantir que seu sistema não esteja corrompido. Execute rpm -qf /usr/share/zoneinfo/Etc/UTC
para ver qual pacote contém esse arquivo e reinstale-o com yum reinstall
. Em seguida, defina o fuso horário corretamente, seja com o timedatectl
command ou alterando o link simbólico /etc/localtime
e o arquivo de texto /etc/zoneinfo
ou /etc/sysconfig/clock
(acho que o Fedora usa o último):
ln -snf /usr/share/zoneinfo/Europe/Madrid /etc/localtime
echo Europe/Madrid >/etc/zoneinfo
sed -i -e '/^ *ZONE=/d' /etc/sysconfig/clock
echo 'ZONE="Europe/Madrid"' >>/etc/sysconfig/clock
O Java faz as coisas de maneira diferente - ignora a biblioteca padrão e lê /etc/timezone
ou /etc/sysconfig/clock
. É por isso que você está vendo informações de fuso horário diferentes dos programas Java.