Como tratar o horário de verão

7 respostas
R

Boa tarde, pessoal…

tô com uma dúvida aqui em relação ao horário de verão, usando as APIs do Java…

eu setei o timezone para o nosso usando isso:

TimeZone.getTimeZone("Brazil/East")

porém ele fica com uma hora atrás da hora em que devia estar… ja que o servidor fica em outro lugar, estou tentando dar um jeito pro horário ficar igual está aqui, no horário de Brasília.

Vi uns exemplos googlando por aí, porém nenhum resolveu.

Alguém tem uma idéia de como ajudar? Sem o uso de nenhuma outra API de manipulação de datas.

Obrigado.

7 Respostas

D

Quais?
O que aconteceu?
Exception? Erro? Falha? Nada muda?

R

ele coloca o horário de brasília mas sem a alteração do horário de verão…

o que eu gostaria é que quando estivéssemos em horário de verão, a data printada também fosse alterada.

D

digaoneves:
ele coloca o horário de brasília mas sem a alteração do horário de verão…

o que eu gostaria é que quando estivéssemos em horário de verão, a data printada também fosse alterada.


E quais foram os exemplos?

R

segue alguns

String oldFormatPattern = "yyyy-MM-dd hh:mm:ss" ;
String newFormatPattern = "dd MMM yyyy hh:mm:ss z";
java.text.SimpleDateFormat sdf = new SimpleDateFormat(oldFormatPattern);
java.text.SimpleDateFormat newDateFormat = new SimpleDateFormat(newFormatPattern);
java.util.Date dateToBeConvertedToGMT = null;
try{

//stringDateToBeConverted is the actual date to be converted to new format and
//timezone
dateToBeConvertedToGMT = sdf.parse(stringDateTobeConverted);
}
catch(java.text.ParseException pe){
pe.printStackTrace();
}
java.util.TimeZone T1 = TimeZone.getTimeZone("GMT");

// set the time zone of the converted date to GMT
newDateFormat.setTimeZone(T1);

exemplo extraído daqui

e outro:

java.text.SimpleDateFormat format = new 
SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  java.util.Calendar cal = Calendar.
getInstance(new SimpleTimeZone(0, "GMT"));
  format.setCalendar(cal);
  java.util.Date date = format.parse("2003-01-25 00:15:30");
  System.out.println(date);  
  } 
}

extraído daqui.

R

Complementando… tentei fazer usando JodaTime, nunca tinha usado… e fiz assim

DateTime saoPaulo = data.withZoneRetainFields(DateTimeZone.forID("America/Sao_Paulo"));
DateTimeFormatter dtf = DateTimeFormat.forPattern("yyyy-MM-dd kk:mm:ss");
System.out.println(saoPaulo);
System.out.println(dtf.print(saoPaulo.getMillis()));

se eu printar a data direto, ela vem com o horário de verão certinho… porém se eu formato ela o horário volta, como se não estivesse mais no horário de verão.

Alguém sabe dizer se fiz alguma besteira na conversão, ou se existe um outro caminho? Obrigado!

W

digaoneves:
Complementando… tentei fazer usando JodaTime, nunca tinha usado… e fiz assim

DateTime saoPaulo = data.withZoneRetainFields(DateTimeZone.forID("America/Sao_Paulo"));
DateTimeFormatter dtf = DateTimeFormat.forPattern("yyyy-MM-dd kk:mm:ss");
System.out.println(saoPaulo);
System.out.println(dtf.print(saoPaulo.getMillis()));

se eu printar a data direto, ela vem com o horário de verão certinho… porém se eu formato ela o horário volta, como se não estivesse mais no horário de verão.

Alguém sabe dizer se fiz alguma besteira na conversão, ou se existe um outro caminho? Obrigado!


tente:

http://www.guj.com.br/java/229152-horario-de-verao

aproveite e leia o link que postei lá por último.

R

ah… o buraco é mais embaixo hehehehe… Muito obrigado hein, cara…

O problema é que não tenho acesso a JVM do servidor, é tudo externo… vou ter que enviar uma solicitação pra lá e esperar que atendam hehehe…

Mas muito obrigado, cara! vlw!

Criado 20 de dezembro de 2011
Ultima resposta 20 de dez. de 2011
Respostas 7
Participantes 3