Olá,
Por exemplo, se a aplicação roda na nuvem em outro país, se eu utilizar um simples new Date() a data que virá será do servidor, porém quero trazer a data formatada com o GMT de Brasília, como faço isso?
Olá,
Por exemplo, se a aplicação roda na nuvem em outro país, se eu utilizar um simples new Date() a data que virá será do servidor, porém quero trazer a data formatada com o GMT de Brasília, como faço isso?
Olá, Felipe.
Você pode usar as Classes SimpleDateFormat e TimeZone. Algo mais ou menos assim:
DateFormat df = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
try {
df.setTimeZone(TimeZone.getTimeZone(ID_ONDE_VC_ESTA));
Date suaData = df.parse(df.format(DATA_ORIGEM));
} catch (ParseException e) {
// TODO
}
Sobre o ID_ONDE_VC_ESTA, para o Brasil temos os seguintes: Brazil/Acre Brazil/DeNoronha Brazil/East Brazil/West
Mas claro, isso tudo fazendo com "java puro". Tem o Joda Time que é bastante utilizado pela comunidade pra resolver esse tipo de problema. (http://www.joda.org/joda-time/)
Espero ter ajudado.
Olá Vinicius, obrigado pela resposta. Eu fiz dessa maneira:
SimpleDateFormat dateFormatGmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") dateFormatGmt.setTimeZone(TimeZone.getTimeZone("GMT-3")) SimpleDateFormat dateFormatLocal = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
Mas agora tenho outra dúvida, e quando for horário de verão, como faço isso automaticamente? é possível?
Esqueci da última parte:
Esqueci da última parte: dateFormatLocal.parse(dateFormatGmt.format(new Date()))
Felipe, Se vc passar como parâmetro "GMT-3" será sempre essa a conversão que ele fará (Hora Zulu - 3 horas).
O correto, nesse caso é passar "Brazil/East" para o método getTimeZone que ele mesmo já implementa essa lógica e te devolverá o valor correto.
Cara, muito obrigado, funcionou perfeitamente. Uma última curiosidade, para trabalhar com horário de verão automaticamente, sem eu precisar colocar a mão no código eu preciso consumir uma API externa? tipo time.windows.com
Não é necessário. A própria JVM tamtém implementa a lógica da classe TimeZone. IMPORTANTE: Deixar sempre a versão do Java atualizado, para caso mude alguma regra do horário de verão.
Esse exemplo que você citou é para se por acaso você receber uma data de um TimeZone diferente e precise convertê-lo.
Que bom que ajudei! ;)