Olá, por favor gostaria muito da ajuda de vocês, este é o meu primeiro post, porquê sempre consegui achar dentro deste fórum ou outros as repostas para minha dúvida, mas agora confesso que não achei uma resposta para o que ocorre.
Estou utilizando um programa que armazena dados e suas respectivas datas em arquivos txt, mas, a fonte de dados que eu utilizo está no GMT 0, ou seja as horas estão acrescidas de 3 horas para o horário do Brasil que é GMT -3.
O meu objetivo é fazer a correção do GMT 0 para o GMT -3 de forma coerente, porque tentei de diversas formas e o que ocorre é que o dia 1 de maio 00:00 cai no dia 31 de abril 21:00.
Eu estou usando o calendário gregoriano, instânciado da seguinte forma:
GregorianCalendar c = new GregorianCalendar();
Estou setando os dias mês e horas da seguinte forma (não acredito que haja problemas aqui,mas, em via das dúvidas):
c.set(Calendar.YEAR, Integer.parseInt(data[0]));
c.set(Calendar.MONTH, strToMonth(data[1]));
c.set(Calendar.DAY_OF_MONTH, Integer.parseInt(data[2]));
c.set(Calendar.HOUR_OF_DAY, Integer.parseInt(data[3]));
c.set(Calendar.MINUTE, Integer.parseInt(data[4]));
c.set(Calendar.SECOND, 0);
Já tentei fazer esta atualização do GMT 0 para o GMT -3 das seguintes formas:
1)Setando em Milis e subratindo a quantidade de Milisegundos equivalentes a três horas.
c.setTimeInMillis(c.getTimeInMillis()- 1000 * 60 * 60 * 3);
2)Subratindo 3 horas do calendário:
c.add(Calendar.HOUR_OF_DAY, -3);
Agradeço muito a ajuda de vocês, e ficaria muito feliz se houver uma maneira “elegante” de solucionar isto.
Caso contrário vou partir pra um algoritimo braçal =/.