Pergunta

Estou executando uma aplicação Tomcat, e eu preciso para visualizar alguns valores de tempo.Infelizmente, o tempo está chegando uma hora.Eu olhava para ele e descobri que o meu padrão de Fuso horário é definido para:

sun.util.calendar.ZoneInfo[id="GMT-08:00",
                           offset=-28800000,
                           dstSavings=0,
                           useDaylight=false,
                           transitions=0,
                           lastRule=null]

Em vez de fuso horário do Pacífico.Este é mais indicado quando tento imprimir o padrão do fuso horário nome de exibição, e ele vem "GMT-08:00", o que parece indicar-me que ele não está correctamente definida para os EUA fuso horário do Pacífico.Estou a executar no Ubuntu Hardy Heron, atualizado a partir do Gutsy Gibbon.

Existe um arquivo de configuração que eu possa atualizar para informar o JRE para o uso Pacífico com todos os associados do horário de verão informação?O tempo na minha máquina mostra corretamente, para que ele não parece ser um SO-ampla configuração incorreta.


Ok, aqui está uma atualização.Um colega sugeriu que eu atualização JAVA_OPTS no meu /etc/profile para incluir "-Duser.fuso horário=US/Pacífico", que funcionou (eu também vi CATALINA_OPTS, que eu atualizados, bem como).Na verdade, eu só exportados a alteração das variáveis, em vez de usar o novo arquivo /etc/profile (um reinicializar mais tarde vai pegar a alterações e vou ser de ouro).

No entanto, eu ainda acho que há uma solução melhor...deve ser uma configuração para Java em algum lugar que diz que o fuso horário que está a utilizar, ou como ele está agarrando o fuso horário.Se alguém sabe como uma definição, que seria fantástico, mas, por agora, esta é uma boa solução.


Eu estou usando 1.5, e é definitivamente uma DST problema.Como você pode ver, o fuso horário é definido para não utilizar o horário de poupança.Minha crença é que é genericamente definido para -8 compensar mais do que a fuso horário do Pacífico.Desde o genérico -8 deslocamento não tem data de poupança de informações, é claro que não usá-lo, mas a questão é, onde posso dizer Java para usar o fuso horário do Pacífico quando ele é iniciado?Eu NÃO estou procurando uma solução programática, deve ser uma solução de configuração.

Foi útil?

Solução

É um "capricho" na forma como a JVM procura o arquivo de fuso horário.Ver Erro de ID de 6456628.

A solução mais fácil é fazer com que o /etc/localtime um link simbólico para o arquivo de fuso horário correto.Para a hora do Pacífico, os seguintes comandos devem funcionar:

# sudo cp /etc/localtime /etc/localtime.dist
# sudo ln -fs /usr/share/zoneinfo/America/Los_Angeles /etc/localtime

Eu não tive qualquer problema com o link simbólico abordagem.

Editar:Adicionado o "sudo" para os comandos.

Outras dicas

No Ubuntu, ele não é apenas o suficiente para alterar o arquivo /etc/localtime.Parece leia /etc/arquivo de fuso horário, também.É melhor seguir o instrução para definir o fuso horário corretamente.Em particular, faça o seguinte:

$ sudo cp /etc/timezone /etc/timezone.dist
$ echo "Australia/Adelaide" | sudo tee /etc/timezone
Australia/Adelaide
$ sudo dpkg-reconfigure --frontend noninteractive tzdata

Current default time zone: 'Australia/Adelaide'
Local time is now:      Sat May  8 21:19:24 CST 2010.
Universal Time is now:  Sat May  8 11:49:24 UTC 2010.

No meu Ubuntu, se o /etc/localtime e /etc/timezone são inconsistentes, Java parece ler fuso horário padrão a partir de /etc/timezone .

Eu tive um problema semelhante, possivelmente o mesmo.No entanto o meu tomcat server é executado em um windows de caixa para o link simbólico solução não vai funcionar.

Eu definida -Duser.timezone=Australia/Sydney no JAVA_OPTS no entanto, o tomcat não iria reconhecer que a hora de verão foi em vigor.Como uma solução alternativa que eu mudei Australia/Sydney (GMT+10:00) para Pacific/Numea (GMT+11:00), de modo que o tempo iria exibir corretamente no entanto, eu gostaria de saber a solução real ou erro, se houver.

Ele pode ajudar a verificar o fuso horário regras de seu sistema operacional está usando.

/usr/bin/zdump -v /etc/localtime | less

Este arquivo deverá conter a sua data de economia de regras, como um presente para o ano de 2080:

/etc/localtime  Sun Mar 31 01:00:00 2080 UTC = Sun Mar 31 02:00:00 2080 BST isdst=1 gmtoff=3600

Você pode comparar isso com o fuso horário regras de você acho que você deve estar usando.Eles podem ser encontrados em /usr/share/zoneinfo/.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top