如何正确计算运行时间

时间:2016-05-16 18:35:28

标签: java timing

我想从头到尾计算我的程序的总运行时间,并在JFrame中刷新运行时间,但是当我运行程序时,我会超过70年,1天和2小时。为什么?怎么了?

clearInterval(animateInterval);

actual result

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 time = new SimpleDateFormat("yy:mm:dd:HH:mm:ss").format(diffTime);
           System.out.println(time);
       }
    }, 0, 1000);
}

2 个答案:

答案 0 :(得分:1)

您将时间差格式设置为yy:mm:dd:HH:mm:ss。只需打印出diffTime就可以得到毫秒,如果需要秒,则除以1000。

编辑:我想我知道你要做什么,但是你正在处理一个时间间隔,不能将其格式化为日期。您需要滚动自己的格式以将时间显示为秒,分钟,小时等,或者使用外部库。

答案 1 :(得分:0)

getTime返回1.1.1970的毫秒数...同样是SimpleDateFormat将数字转换为日期(然后形成它)。这意味着当您的diffTime = 0时,SimpleDateFormat将尝试格式化日期1.1.1970 0:00:00,并使用您的格式化字符串,它将是70:01:01:00:00:00。请尝试使用http://joda-time.sourceforge.net/api-release/org/joda/time/Interval.html

顺便说一下,你的格式化字符串无论如何都是错误的......你使用的是我想要的月份......但是mm是分钟。