Problema com hora no Calendar

7 respostas
D

Estou tentando pegar a hora atual do Calendar mas a hora vem errada, 3 horas a mais

Calendar c = Calendar.getInstance(new Locale("pt", "BR"));
String tempo = "" + c.get(Calendar.HOUR) + c.get(Calendar.MINUTE) + c.get(Calendar.SECOND);

achei que só passando o Locale deveria funcionar, mas agora são 8h e a hora vem como sendo 11

[]s

7 Respostas

C

Se a hora do seu pc estiver correta, então ele está configurado com a localidade de outro país que não é o Brasil.

Veja se ele não está configurado como United States.

D

com o Location conforme o anexo não funcionou…

e outra coisa, se eu criei um Locale do Brasil ele não deveria ignorar o do sistema?

C

Se é alterado o locale para “br” e o pc está configurado para “us”, então ele vai pegar o fuso do Brasil. Mas para isso a hora tem que ser a americana tbm.

Nesse caso aí não sei pq não está rolando. Mas eu acho que a jvm pega a hora do sistema mesmo, a não ser q tenha algum parâmetro de configuração regional para a jvm. Mas estou em dúvida.

:shock: :shock: :shock:

T

pode tentar usar o metodo getTime na sua instancia de calendar e depois formatar a data usando SimpleDateFormat

Calendar c = Calendar.getInstance(new Locale("BR"));
	 SimpleDateFormat format = new SimpleDateFormat("hh:mm:ss");
	 System.out.println(format.format(c.getTime()));
D

Thiago

não deu certo, continua saindo com 3 horas a mais… ao invés de 9:00h sai 12:00h

estou começando a ficar bolado

D

Consegui uma solução (apesar de não ter gostado)

mandei rodar o programa com esse parâmetro na inicialização da jvm
-Duser.timezone=America/Sao_Paulo

gostaria de fazer isso pelo código, se alguém tiver idéia do porquê não está funcionando a configuração do Locale posta aí

[]s

D

só pra deixar registrado uma outra forma de se fazer…

Calendar c = new GregorianCalendar();
c.setTimeZone(TimeZone.getTimeZone("America/Sao_Paulo"));

[]s

Criado 1 de setembro de 2008
Ultima resposta 3 de set. de 2008
Respostas 7
Participantes 3