プログラムの実行時間の合計を計算し、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年も経っていません。あなたは、1970年1月1日午前12時からの時間量として解釈される日付に基づいて文字列を作成しています。次に、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
[Javaでhh:mm:ss.SSS形式で経過時間をフォーマットする方法は?](http://stackoverflow.com/questions/6710094/how-to-format-an-elapsed-time-intervalin-in -hhmmss-sss-format-in-java) – shmosel