代碼
package com.benywave;import java.util.Timer;import java.util.TimerTask;public class TimerTest { PRivate Timer timer; private long elapsedSeconds; public TimerTest() { timer = new Timer(); } public static void main(String[] args) { //System.out.println(formatElapsedTime(3661)); new TimerTest().startClock(); } /** * 開始粗略計時 */ private void startClock(){ elapsedSeconds = 0; timer.schedule(new TimerTask() { @Override public void run() { System.out.println(formatElapsedTime(elapsedSeconds)); elapsedSeconds += 1; } },0,999); } private void stopClock(){ if(timer != null){ timer.cancel(); timer.purge(); } } /** * 格式化輸出時間字符串 * @param elapsedSeconds * @return */ public static String formatElapsedTime(long elapsedSeconds){ long hours = 0; long minutes = 0; long seconds = 0; if(elapsedSeconds >= 3600){ hours = elapsedSeconds / 3600; elapsedSeconds -= hours * 3600; } if(elapsedSeconds >= 60){ minutes = elapsedSeconds / 60; elapsedSeconds -= minutes * 60; } seconds = elapsedSeconds; StringBuilder sb = new StringBuilder(); sb.append(addZeroBeforeNumber(hours)); sb.append(":"); sb.append(addZeroBeforeNumber(minutes)); sb.append(":"); sb.append(addZeroBeforeNumber(seconds)); return sb.toString(); } /** * 加0處理,不足兩位時補0 * @param number * @return */ public static String addZeroBeforeNumber(long number){ StringBuilder sb = new StringBuilder(); if(number >= 0 && number <= 9){ return sb.append("0").append(number).toString(); } return sb.append(number).toString(); }}
控制臺輸出
這種方式,只是粗略計時,不適合精確計時的場景。
雖然寫了停止計時器的方法,但并未調用,所以啟動計時后不會停止。
只是作為練習demo, 僅供參考。
新聞熱點
疑難解答