Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 769
  • Last Modified:

compare to Dates only

Hi,

 I have 2 java.util.Date objects
I want to compare those 2 dates
I am using the following statement

int result = stDt.compareTo(endDt);

i am wondering sometimes even though both the dates are same, it's returning -1
I don't understanding why it's returning zero sometimes and -1 sometimes
even though both the dates are same.

Basically i need a function which should comapare 2 dates. it should give me true if both the dates have same yyyy-MM-dd, even though they have different HH:mm:ss.
It should compare only date part, not time part.

i guess you got my requirement.

Is there any such method in Java?

I appreciate your help!

Thanks
0
mvkraju
Asked:
mvkraju
1 Solution
 
GrandSchtroumpfCommented:
> even though both the dates are same.
are you sure about that?
the "Date" does not only represent a date, but also a time (with hours, minutes, seconds and milliseconds).
0
 
objectsCommented:
If you don't care about the time part then you could use java.sql.Date

int result = new java.sql.Date(stDt.getTime()).compareTo(new java.sql.Date(endDt.getTime()));
0
 
JavaInTheMorningCommented:
import java.util.Calendar;
...
...
private boolean compareDates(Date date1, Date date2)
{
      Calendar calendar1 = Calendar.getInstance();
      Calendar calendar2 = Calendar.getInstance();
      calendar1.setTime(date1);
      calendar2.setTime(date2);
      return (calendar1.get(Calendar.DATE) == calendar2.get(Calendar.DATE) &&
                 calendar1.get(Calendar.MONTH) == calendar2.get(Calendar.MONTH) &&
                 calendar1.get(Calendar.YEAR) == calendar2.get(Calendar.YEAR));
}

Calendar API:
http://java.sun.com/j2se/1.3/docs/api/

To add time comparison, use other constants of Calendar.

Enjoy,
Itsik
0
 
JavaInTheMorningCommented:
0
 
rajuvegesnaCommented:
you cant compare two dates directly, further here is an example which i have done in my old projects..

// systemdate
                 String systDate = Pyear+"/"+Pmonth+"/"+Pdate ;

//user selected date
             String wholepath = year+"/"+month+"/"+day ;

//one fixed date
             String fixDate = "2001/11/24" ;
            
            DateFormat df = new SimpleDateFormat("yyyy/MM/dd");
            
            Date sys = null;
            try {
                  sys = df.parse(systDate);
            } catch (ParseException e) {
                  e.printStackTrace();
            }
            
            Date pre = null;
            try {
                  pre = df.parse(wholepath);
            } catch (ParseException e1) {
                  e1.printStackTrace();
            }
            
            Date pas = null;
            try {
                  pas = df.parse(fixDate);
            } catch (ParseException e1) {
                  e1.printStackTrace();
            }

compare it as,

                        if(pre.after(sys)) {
                        //
                  }
                  else if(pre.before(pas)) {
                        //
                  }
                  else {
                        //
                  }

hope i could help!!
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

The 14th Annual Expert Award Winners

The results are in! Meet the top members of our 2017 Expert Awards. Congratulations to all who qualified!

Tackle projects and never again get stuck behind a technical roadblock.
Join Now