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
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.).
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