Calculating time between two date objects

B

Brian

Hi

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

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

Sincerely
Brian
 
A

Arne Vajhøj

Brian said:
I need a few lines of code that calculate the time between two Date()
objects.

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

..getTime() on both and subtract ?

Arne
 
D

Daniel Pitts

Arne said:
..getTime() on both and subtract ?

Arne
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?
 
Z

Zig

Hi

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

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);
}
I need it to calculate the time between two occurences - if there is a
better solution than using Date() objects I'm all ears :)

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
 

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. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,764
Messages
2,569,564
Members
45,040
Latest member
papereejit

Latest Threads

Top