This week's book giveaway is in the Jobs Discussion forum.
We're giving away four copies of Java Interview Guide and have Anthony DePalma on-line!
See this thread for details.
The moose likes Beginning Java and the fly likes How to compare time reliably Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login

Win a copy of Java Interview Guide this week in the Jobs Discussion forum!
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "How to compare time reliably" Watch "How to compare time reliably" New topic

How to compare time reliably

jim xu

Joined: Nov 18, 2007
Posts: 6
I found that java does not seem to have a very reliable way to do date/time comparison. Inspect the following sample code:

You probably would think that the date/time and millis returned by these two calendar should always be the same thus the compare result should always 0, but in fact, it doesn't. Sometimes it returns 0 sometimes -1... I spent a hack of time to find out this problem in my code (due to I wasn't even thought it could be wrong)

Here is a sample output:

the second one calc'ed 1 millisecond more. So if this isn't the prefer way to compare time in Java, what should I use?

[ March 02, 2008: Message edited by: jim xu ]
marc weber

Joined: Aug 31, 2004
Posts: 11343

When you use getInstance(), you get a Calendar set to the current time down to milliseconds. But when you call set, you are only setting year, month, date, hours, minutes, and seconds. The milliseconds remain unchanged.

To "zero out" the Calendar instance, call clear on it before setting it. Then you will get the result you are looking for...

Alternatively, you can set the milliseconds to whatever value you like using an overloaded set method...

[ March 02, 2008: Message edited by: marc weber ]

"We're kind of on the level of crossword puzzle writers... And no one ever goes to them and gives them an award." ~Joe Strummer
jim xu

Joined: Nov 18, 2007
Posts: 6
Ah I see. Thanks!
I agree. Here's the link:
subject: How to compare time reliably
jQuery in Action, 3rd edition