views:

141

answers:

5

hello, I would like to compare a date to the current date. could you please tell me how to do that in java.

A: 

With a java.util.Date it can be done with:

Date today = new Date();
today.equals(otherDate) / today.after(otherDate) / today.before(otherDate)

If you want a more precise calculation I would recommend that you don't use Date since many methods of it are deprecated. java.util.Calendar is better, with it the current date is accessed like this:

Calendar cal = Calendar.getInstance();

If you are comparing a Calendar with a Date, the comparison can be done like this:

Date date //your date
Calendar.getInstance().equals(date)/before(date)/after(date);

But you can also get the exact millisecond count:

long diff = Calendar.getTimeInMillis() - date.getTime();
Lars Andren
+2  A: 

You can get the current date, with the current locale/timezone, by doing

Date now = new Date();

Then given another date, d, you can do:

if (d.equals(now))
or
if (d.after(now))
or
if (d.before(now))

etc.

If the date you have is provided to you as a String, use

java.text.SimpleDateFormat.java to convert it to a Date object.

MeBigFatGuy
Good advice, though note that Dates are by nature timezone-independent. Under the covers a Date is just a `long` offset in milliseconds since 1 January 1970 in UTC (Greenwich Mean Time).
Jim Ferrans
A: 

Get the dates (however you get them, in the code below it is new Date()) and then use the getTime() to get the Unix time (offset from January 1, 1970, 00:00:00 GMT) to do the comparison

Date then = new Date();
...
Date now = new Date();

long thenInMilliseconds = then.getTime();
long nowInMilliseconds = now.getTime();

if(nowInMilliseconds [<, <=. ==, >=, >] thenInMilliseconds)

You can also use the compareTo method, or as is pointed out in another answer the before and after methods.

EDIT based on comment below:

To parse a date from a String you can use the SimpleDateFormat class (there are other ways too).

For example here is some code I am using for that:

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
Date date = dateFormat.parse("2010-02-12T18:03:15Z");
TofuBeer
the problem is I have the date that i need to compare it is in string. how can i convert it into a long
A: 
Date d1 = new Date();
Date d2 = new Date();
int results = d1.compareTo(d2);

d1 and d2 should be initialised with the dates and can be compared

CompareTo is the method that helps you to find the difference between the dates.

harigm
A: 

Under the covers a Date is just a long number of milliseconds since 1 January 1970. You can get the long value using myDate.getTime(). To do Date comparisons you could just compare their long values this way. But as others have pointed out Date has some nice methods to make this clearer: equals(), before(), and after().

To convert a string to a Date, use SimpleDateFormat. See this tutorial.

I've recently started using the Joda-Time library, which is much, much easier to understand and work with than Java's Dates and Calendars.

Jim Ferrans