Я хочу рассчитать общее время работы моей программы от начала до конца и обновить время работы в JFrame, но когда я запускаю свою программу, я получаю избыток 70 лет, 1 день и 2 часа. Зачем ? Что не так ?Как исправить подсчет времени работы
private void setMachineTime(){
Timer timer = new Timer();
long startTime = new Date().getTime();
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
long endTime = new Date().getTime();
long diffTime = endTime - startTime ;
String time = new SimpleDateFormat("yy:mm:dd:HH:mm:ss").format(diffTime);
System.out.println(time);
}
}, 0, 1000);
}
UPD: я переписал код с моим собственным методом времени формата. Теперь я получил то, что хочу. Всем спасибо.
private void setMachineTime(){
Timer timer = new Timer();
long startTime = new Date().getTime();
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
long endTime = new Date().getTime();
long diffTime = endTime - startTime;
String diffSeconds = formatTime(diffTime/1000 % 60);
String diffMinutes = formatTime(diffTime/(60 * 1000) % 60);
String diffHours = formatTime(diffTime/(60 * 60 * 1000) % 24);
System.out.println(diffHours + ":" + diffMinutes + ":" + diffSeconds);
}
}, 0, 1000);
}
private String formatTime(long diff){
long t;
t = diff;
if(t < 10){
return String.valueOf("0"+t);
} else {
return String.valueOf(t);
}
}
Вы не получаете 70 лет. Вы делаете строку на основе даты, которая интерпретируется как количество времени с 12:00 AM 1 января 1970 года. Затем вы печатаете год, который составляет 1970 год, или «70». Посмотрите, что произойдет, если вы попробуете 'String time = new SimpleDateFormat (« yy: mm: dd: HH: mm: ss »). Format (0);' - он скажет, что это точная дата. Также проверьте http://stackoverflow.com/questions/17940200/how-to-find-the-duration-of-difference-between-two-dates-in-java – childofsoong
На самом деле, теперь, когда я думаю об этом, это, вероятно, не указывая точную дату, а вместо этого настройте свой часовой пояс. Тем не менее, общий принцип. – childofsoong
[Как отформатировать прошедший интервал времени в формате hh: mm: ss.SSS в Java?] (Http://stackoverflow.com/questions/6710094/how-to-format-an-elapsed-time-interval-in -hhmmss-SSS-формат-в-Java) – shmosel