我想从头到尾计算我的程序的总运行时间,并在JFrame中刷新运行时间,但是当我运行程序时,我会超过70年,1天和2小时。为什么?怎么了?
clearInterval(animateInterval);
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);
}
答案 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是分钟。