I have Two String Datetime as follows:
String Date1 = \"05-09-2013 10:46:10\"
String Date2 = \"06-09-2013 10:46:10\"
I Need to compare thes
try{
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
String str1 = "12/10/2013";
Date date1 = formatter.parse(str1);
String str2 = "13/10/2013";
Date date2 = formatter.parse(str2);
if (date1.compareTo(date2)<0)
{
System.out.println("date2 is Greater than my date1");
}
}catch (ParseException e1){
e1.printStackTrace();
}
You can use following:
public static boolean CheckDates(String startDate, String endDate) {
SimpleDateFormat dfDate = new SimpleDateFormat("dd-MMM-yyyy");
boolean b = false;
try {
if (dfDate.parse(startDate).before(dfDate.parse(endDate))) {
b = true; // If start date is before end date.
} else if (dfDate.parse(startDate).equals(dfDate.parse(endDate))) {
b = true; // If two dates are equal.
} else {
b = false; // If start date is after the end date.
}
} catch (ParseException e) {
e.printStackTrace();
}
return b;
}
Try Joda time for the best result. Its very simple to use.
You can convert String to Date like this:
String str = "12/12/1912";
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
Date date = formatter.parse(str);
And back to String
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
System.out.println("Date is : " + formatter.format(date));
And Date has before and after methods and can be compared to each other.
By the way there is also a library called Joda, you can also check it out.
this snippet explain when we compare two dates in string formats, in other words to date is not allowed when greater than from date.
private void setTodate() {
// TODO Auto-generated method stub
// Process to get Current Date
int fYear, fMonth, fDay;
final Calendar c = Calendar.getInstance();
fYear = c.get(Calendar.YEAR);
fMonth = c.get(Calendar.MONTH);
fDay = c.get(Calendar.DAY_OF_MONTH);
// Launch Date Picker Dialog
DatePickerDialog dpd = new DatePickerDialog(RemindMeDetails.this,
new DatePickerDialog.OnDateSetListener() {
@SuppressLint("SimpleDateFormat")
@Override
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
try{
SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
String fdate=recr_edit_Fromdate.getText().toString();
Date dateFD = formatter.parse(fdate);
String tdate=(dayOfMonth + "-"
+ (monthOfYear + 1) + "-" + year).toString();
Date dateTD = formatter.parse(tdate);
if (dateFD.compareTo(dateTD)<=0)
{
/* System.out.println("tdate is Greater than my fdate");
recr_edit_Todate.setText(dayOfMonth + "-"
+ (monthOfYear + 1) + "-" + year);*/
recr_edit_Todate.setText(tdate);
}
else{
showmessage("Alert", "Start date is not greater than End date");
}catch (ParseException e1){
e1.printStackTrace();
}
}
}, fYear, fMonth, fDay);
dpd.show();
}// method closed
String pattern = "dd-MM-yyyy HH:mm:ss";
SimpleDateFormat dateFormat = new SimpleDateFormat(pattern);
Date one = dateFormat.parse(Date1String);
Date two = dateFormat.parse(Date2String);
Now you have two Date
objects, you can compare them.