[Okta Webinar] Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 768
  • 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

Featured Post

[Webinar] Cloud and Mobile-First Strategy

Maybe you’ve fully adopted the cloud since the beginning. Or maybe you started with on-prem resources but are pursuing a “cloud and mobile first” strategy. Getting to that end state has its challenges. Discover how to build out a 100% cloud and mobile IT strategy in this webinar.

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