Solucionado (ver solução)
Solucionado
(ver solução)
7
respostas

Pegar data formatada com GMT.

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?

7 respostas

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

solução!

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! ;)