代码
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, 仅供参考。
时间: 2024-10-14 23:11:11