[RESOLVIDO]Como impedir a atualização do horário de verão

Boa tarde pessoal

Venho pedir socorro com vocês novamente!

Minha aplicação desktop possui um relógio no canto inferior direito da tela e o mesmo atualizou para o horário de verão, porém neste ano de 2019 não haverá mudanças

Alguém pode me explicar como corrigir?

Segue o código:

Timer timer;
    Calendar calendar = Calendar.getInstance();
    SimpleDateFormat hora = new SimpleDateFormat("HH:mm:ss");

    timer = new Timer(1000, (ActionEvent e) -> {
        calendar.setTimeInMillis(calendar.getTimeInMillis() + 1000);
        txtHora.setText(hora.format(calendar.getTime()));
        txtHora.setFont(f);
    });
    timer.start();

Boa tarde, Jardel!

Se você sobe a aplicação desktop pela linha de comando, experimente usar o parâmetro timezone como abaixo:

Exemplo:
java -Duser.timezone=GMT-3:00 -jar suaAplicacao.jar

1 curtida

E o horário da máquina está certo?

1 curtida

Vá no site: https://www.iana.org/time-zones, e baixe o arquivo:

tzdata2019c.tar.gz (382.9kb) Data Only Distribution

E depois execute esse comando apontando para o arquivo baixado:

$JAVA_HOME/bin/java -jar tzupdater.jar -v -f -l file:tzdata2019c.tar.gz

Baixe o tzupdater nesse link: https://www.oracle.com/technetwork/java/javase/downloads/tzupdater-download-513681.html

Sim, está certo

Baixei os arquivos, mas não consegui executá-los

Pode me orientar?

Pq não conseguiu? Deu algum erro?

Sim
Sou iniciante, perdoe-me se estou fazendo algo errado
É para executar o comando no prompt, correto?
Aparece esse erro:
Error: Unable to access jarfile tzupdater.jar

Vc tem que ver onde o arquivo está e como o comando está sendo executado, por exemplo

Se vc estiver na mesma pasta do jar, o comando deve ser:

$JAVA_HOME/bin/java -jar tzupdater.jar -v -f -l file:tzdata2019c.tar.gz

Se vc NÃO estiver na mesma pasta do jar, o comando deve ser:

$JAVA_HOME/bin/java -jar c:/caminho/jar/tzupdater.jar -v -f -l file:tzdata2019c.tar.gz

O mesmo vale para o arquivo file:tzdata2019c.tar.gz

Lembrando que, da forma como exemplifiquei, o java deve está configurado no path do seu sistema operacional, senão deve colocar o caminho absoluto do java, ex.: C:/caminho/do/seu/java/java ...

Realmente eu estava errando o caminho, já que não estavam na mesma pasta
Executou porém apareceu isso no final:

Failed: java.nio.file.AccessDeniedException: C:\Program 
Files\Java\jre1.8.0_111\lib\tzdb.dat.dynamic
java.nio.file.AccessDeniedException: C:\Program 
Files\Java\jre1.8.0_111\lib\tzdb.dat.dynamic
    at sun.nio.fs.WindowsException.translateToIOException(Unknown Source)
    at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
    at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
    at sun.nio.fs.WindowsFileSystemProvider.newByteChannel(Unknown Source)
    at java.nio.file.spi.FileSystemProvider.newOutputStream(Unknown Source)
    at java.nio.file.Files.newOutputStream(Unknown Source)
    at tools.tzdb.TzdbZoneRulesCompiler.outputFile(TzdbZoneRulesCompiler.java:237)
    at tools.tzdb.TzdbZoneRulesCompiler.compile(TzdbZoneRulesCompiler.java:208)
    at tools.tzdb.TzdbZoneRulesCompiler.main(TzdbZoneRulesCompiler.java:83)
    at 
com.sun.tools.tzupdater.ExternalModule.compileToJSRBinary(ExternalModule.java:169)
    at com.sun.tools.tzupdater.TimezoneUpdater.run(TimezoneUpdater.java:252)
    at com.sun.tools.tzupdater.TimezoneUpdater.main(TimezoneUpdater.java:686)

Consegui, alterei as permissões da pasta JRE e deu certo, porém minha aplicação continua com o horário de verão

Reinicia todas as instâncias que estiver rodando do java e tente de novo (as IDEs, servers, classes main, etc.).

Não funcionou ainda :confused:

Alguém tem mais alguma ideia por favor?

onde vc ta pegando esse horario?

Operações diversas:

    Date dt = new Date();
    LocalDateTime hoje = LocalDateTime.ofInstant(dt.toInstant(), ZoneId.systemDefault());
    Date d = Date.from(hoje.atZone(ZoneId.systemDefault()).toInstant());

    Calendar hAtual = Calendar.getInstance();
    int hora = hAtual.get(Calendar.HOUR_OF_DAY);
    int min = hAtual.get(Calendar.MINUTE);
    int seg = hAtual.get(Calendar.SECOND);
    hAtual.set(hora, min, seg);

    String horaAtual = format.format(hAtual.getTime());

Relógio:

Timer timer;
Calendar calendar = Calendar.getInstance();
SimpleDateFormat hora = new SimpleDateFormat("HH:mm:ss");

timer = new Timer(1000, (ActionEvent e) -> {
    calendar.setTimeInMillis(calendar.getTimeInMillis() + 1000);
    txtHora.setText(hora.format(calendar.getTime()));
    txtHora.setFont(f);
});
timer.start();

Tá pegando do PC… Sei que vai parecer ridículo, mas já tentou alterar o horário do PC? Eu pego também, alterei a hora do PC e funcionou de boa

É só usar a propriedade de sistema:

-Duser.timezone=GMT-3:00

Alguem pode ajudar num código por favor

Sim, já verifiquei o hora da máquina, está correta