Jump to content

Simple Timer class


Septron

Recommended Posts

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

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 by H0ppy
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...