Calculating time between two date objects

Discussion in 'Java' started by Brian, Dec 9, 2007.

  1. Brian

    Brian Guest


    I need a few lines of code that calculate the time between two Date()

    I need it to calculate the time between two occurences - if there is a
    better solution than using Date() objects I'm all ears :)

    Brian, Dec 9, 2007
    1. Advertisements

  2. Brian

    Arne Vajhøj Guest

    ..getTime() on both and subtract ?

    Arne Vajhøj, Dec 9, 2007
    1. Advertisements

  3. Brian

    Daniel Pitts Guest

    You can also use System.currentTimeMilles(), depending on what you need.
    How close together are the occurrences? Is this for timing a short
    method, or is it for days apart?
    Daniel Pitts, Dec 9, 2007
  4. Brian

    Zig Guest

    import java.util.Date;
    import java.util.concurrent.TimeUnit;

    * Computes the time difference between two dates, as a-b.
    * @param units the desired units of the result. Units larger than
    * MILLISECONDS may cause truncation
    public long getDifference(Date a, Date b, TimeUnit units) {
    return units.convert(a.getTime()-b.getTime(), TimeUnit.MILLISECONDS);
    Date is appropriate if you are echoing the Date information to a log,
    console, or are otherwise presenting the "time of occurence" somewhere in
    a human readable format. It uses System.currentTimeMillis under the hood.

    System.currentTimeMillis is appropriate for exchanging time between two
    remote machines, or for saving a timestamp to be read back in a later
    session. But, for 2 or more machines, keep in mind that those machines may
    have the clock set slightly differently. System.currentTimeMillis is also
    dependant on the OS clock granularity, and on Windows this value only
    changes every 10ms or so. Lastly, if the system clock changes between
    calculations, then you don't get a measurement of the timelapse between
    said events. While it may be uncommon for a user to change the clock
    between events, many modern systems do have the option for network time
    syncs, which can automatically adjust the clock in the background.

    System.nanoTime is appropriate for measuring elapsed time within a single
    VM session. If you just call System.nanoTime(), the result doesn't have
    any meaning that you can display. But differences between calls will give
    you a good measure of elapsed time. Of course, differences between
    System.nanoTime taken on one host vs another host aren't going to have
    much value or meaning, and the same goes for taking differences between
    the current VM session and a previous session. However, System.nanoTime is
    immune from clock changes, and will give you correct elapsed time results,
    and with much greater precision than System.currentTimeMillis.

    Hope that helps to answer your question.

    Zig, Dec 9, 2007
  5. Brian

    Roedy Green Guest

    Roedy Green, Dec 10, 2007
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.