Fuso horário Problema em Java / Linux
-
05-07-2019 - |
Pergunta
Eu tenho um aplicativo em execução no modo de cluster (dois nós) sob tomcat / Linux. Infelizmente eu tenho notado que node1 e node2 têm diferentes configurações de tempo. Quando em um shell I punch "data" Eu fico em ambas as máquinas ao mesmo:
> date --rfc-2822
Thu, 22 Oct 2009 15:00:15 +0200
Eu escrevi um pequeno programa java que só imprime a data formatado (e tempo).
import java.util.Date;
import java.util.TimeZone;
public class TimeTest {
public static void main(String args[]) {
long time = System.currentTimeMillis();
String millis = Long.toString(time);
Date date = new Date(time);
System.out.println("Current time in milliseconds = " + millis + " => " + date.toString());
System.out.println("Current time zone: " + TimeZone.getDefault().getID());
}
}
Em um nó eu estou ficando: hora atual em milissegundos = 1256215701981 => Qui Out 22 13:48:21 GMT + 01: 00 2009 zona atual tempo: GMT + 01: 00
enquanto que no outro nó que estou recebendo: hora atual em milissegundos = 1256215779203 => Qui 22 outubro 14:49:39 CEST 2009 fuso horário actual: Europe / Berlin
Este é um ambiente Linux ou uma configuração java? Em qualquer caso, como posso mudar isso?
Agradecemos antecipadamente!
Luis
Solução
De acordo com a documentação a fonte do fuso horário padrão pode variar de acordo com a implementação. Para o seu caso parece que um servidor está usando Daylight Savings eo outro não é.
Além disso, este questão pode ser útil.