Pessoal, sei que a dúvida é antiga e existem milhões de tópicos sobre o assunto, peço desculpas desde já, mas estou há dois dias fuçando aqui e ali e ainda não consegui resolver o problema.
Vamos lá, a data/hora do java esta vindo 1 hora adiantada em relação a do S.O (windows 10 em Pt-BR). Aplicação local desktop, banco de dados Derby embutido.
Será que é porque a mudança de horário foi alterado de última hora? pq o normal é mudar o horario de verão no 3º domingo de outubro e acabar no 3º domingo de fevereiro.
`System.out.println(System.getProperty("user.timezone"));
System.out.println(new Date());
System.out.println(Calendar.getInstance().getTime());
System.out.println(new GregorianCalendar(TimeZone.getTimeZone("GMT-2") , new Locale("pt_BR")).getTime());`
Saída
America/Sao_Paulo
Wed Oct 24 13:43:37 BRST 2018
Wed Oct 24 13:43:37 BRST 2018
Wed Oct 24 13:43:37 BRST 2018
Sendo que no relógio do windows são 12:43:37.
Coloquei GMT-2 pois o padrão é GMT-3, então teoricamente teria que diminuir uma hora. Tentei colocar os parâmetros na execução da aplicação tambem.
-Duser.Timezone=America/Sao_Paulo
-Duser.Timezone=GMT-2
-Duser.language=pt
-Duser.country=BR
E tentei um monte de gambiarra que não acho interessante ficar citando aqui, nada adiantou, tanto nos logs do java/netbeans quanto na minha aplicação a hora vem com 1 hora adiantada.
Alguém tem ideia do que posso fazer para resolver ?