Septron Posted July 2, 2013 Share Posted July 2, 2013 public class Timer { private boolean running = false; private long startTime = 0; private long stopTime = 0; public void start() { this.startTime = System.currentTimeMillis(); this.running = true; } public void stop() { this.stopTime = System.currentTimeMillis(); this.running = false; } public long elapsed() { long elapsed; if(running) elapsed = (System.currentTimeMillis() - startTime); else elapsed = (stopTime - startTime); return elapsed; } public int getHourly(int number) { return (int) (number * 3600000.0D / elapsed()); } public String getFormattedString() { long time = elapsed() / 1000; return String.format("%02d:%02d:%02d", time / 3600, (time % 3600) / 60, (time % 60)); } } Example usage... public static void main(String... a) throws InterruptedException { Timer time = new Timer(); time.start(); Thread.sleep(1000); System.out.println(time.getFormattedString()); } Link to comment Share on other sites More sharing options...
Evasive Posted July 7, 2013 Share Posted July 7, 2013 I'm afraid that this class is semantically incorrect . A 'Timer' class is supposed to be an object which counts down from a particular time interval. So, in this case, a proper class name would be 'Stopwatch' (i.e., measuring elapsed time by counting time upwards). Nonetheless, thanks for sharing . Link to comment Share on other sites More sharing options...
H0ppy Posted July 8, 2013 Share Posted July 8, 2013 (edited) Here is my Timer class: public class Timer { private long period; private long startTime; public Timer(long period) { this.period = period; startTime = System.currentTimeMillis(); } public boolean isRunning() { return getElapsed() < period; } public long getElapsed() { return System.currentTimeMillis() - startTime; } public long getRemaining() { return period - getElapsed(); } public void reset() { startTime = System.currentTimeMillis(); } public void stop() { period = 0; } public static String format(long ms) { long sec = ms / 1000L; return String.format("%02d:%02d:%02d",new Object[] { Long.valueOf(sec / 3600L), Long.valueOf((sec % 3600L) / 60L),Long.valueOf(sec % 60L) }); } } Edited July 8, 2013 by H0ppy Link to comment Share on other sites More sharing options...