Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

new Date() está retornando a hora errada, como se fosse horário de verão, mas não é.

Prezados(as),

Ao tentar obter a data e hora atual utilizando Date ou LocalDateTime ou LocalDate, ou de qualquer forma que eu tente, está retornando o horário errado, como se fosse horário de verão, mas não é. Alguém pode me ajudar com esse problema?

Teste:

    public static void main(String[] args) {

        TimeZone t = TimeZone.getDefault();
        System.out.println(t);

        System.out.println(TimeZone.getDefault().inDaylightTime( new Date() ));

        System.out.println(new Date());

        return;
    }

Retorno: sun.util.calendar.ZoneInfo[id="America/Sao_Paulo",offset=-10800000,dstSavings=3600000,useDaylight=true,transitions=129,lastRule=java.util.SimpleTimeZone[id=America/Sao_Paulo,offset=-10800000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=3,startMonth=10,startDay=1,startDayOfWeek=1,startTime=0,startTimeMode=0,endMode=3,endMonth=1,endDay=15,endDayOfWeek=1,endTime=0,endTimeMode=0]]

true

Tue Nov 09 19:55:36 BRST 2021

Horário que o teste foi executado: 18:55

1 resposta
solução!

Encontrei esse Troubleshooting Guide que me ajudou a resolver o problema...

https://docs.oracle.com/en/java/javase/17/troubleshoot/time-zone-settings-jre.html#GUID-FC476CFE-848B-4A3B-90D2-2D97F47AC4FF

No meu caso tive que desabilitar o horário de verão pelo editor de registro do Windows.

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation] "DynamicDaylightTimeDisabled"=dword:00000001

Após reiniciar a máquina, problema resolvido, o Java passou a retornar a hora corretamente.