У меня есть экземпляр Timer из javax.swing.Timer, я пытаюсь рассчитать оставшееся время от восстановления, потому что я использую его для команд.
Я тестирую его с 15 второе время восстановления. Перезарядка работает отлично, но я хочу иметь возможность сообщать, сколько времени осталось, когда я доберусь до более крупных откатов, таких как 5 - 10 минут и c. Я хочу сказать, что 00:00:15 осталось 00:00:14 осталось 00:00:13 осталось и др. c
Я знаю, что здесь что-то упущено.
Ниже я поместил код, который я использую, чтобы вычислить истекшее время и преобразование из Millis в HMS. Когда вызывается команда, для времени начала установлено значение currentTimeMillis ()
long startTime = System.currentTimeMillis();
public void callWithCooldown(int cooldown) {
ActionListener callMethod = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
enable();
}
};
boolean didCall = call();
if(!didCall) return;
disable();
this.timer = new Timer(cooldown, callMethod);
timer.setRepeats(false);
this.startTime = System.currentTimeMillis();
timer.start();
String notification = "Cooldown activated for " + MathHelper.millisecondsToHMS(cooldown) + "!";
System.out.println(notification);
notify(notification);
}
public String elapsedTime() {
long now = System.currentTimeMillis();
long endTime = (startTime + cooldown);
int elapsed = (int) (endTime - now);
System.out.println(elapsed);
return millisecondsToHMS(Math.abs(elapsed));
}
public static String millisecondsToHMS(int milliseconds) {
String time = String.format("%02d:%02d:%02d", TimeUnit.MILLISECONDS.toHours(milliseconds),
TimeUnit.MILLISECONDS.toMinutes(milliseconds) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(milliseconds)),
TimeUnit.MILLISECONDS.toSeconds(milliseconds) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(milliseconds)));
return time;
}