Compare two dates
I want to compare two dates in my application
The first date will be todays date The second will come from a database
To save the second date my code is as follows; (Used tomorrows date to keep it simple)
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_YEAR, 1);
Date tomorrow = calendar.getTime();
DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy");
String tomorrowAsString = dateFormat.format(tomorrow);
So tomorrowAsString (10-Oct-2015)
is stored in a table in my database
In another form I'm retrieving that date and putting it into a String
String steepingDate = (c.getString(3));
I imagine that I'll need to convert that string into a date format and then use the following to get todays date;
Calendar calendar = Calendar.getInstance();
Date today = calendar.getTime();
DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy");
String todayAsString = dateFormat.format(today);
Here is where I'm getting stuck as I'm not sure how to turn the steepingDate
into a Date
and then what is the actual way of comparing the strings, I've tried looking online but there's so many different ways that I've tried and none so far have worked. I want to know which one of the two is grater
EDIT:
I've combined some of the answers and come up with the following;
do {
String steepingDate = (c.getString(3));
SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy");
Date steepingdate = formatter.parse(steepingDate);
Calendar calendar = Calendar.getInstance();
Date today = calendar.getTime();
if(today.compareTo(steepingdate)>0)
{
CompleteSteeping.add(c.getString(1));
}
i += 1;
}while (c.moveToNext());
However on;
SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy");
Date steepingdate = formatter.parse(steepingDate);
I'm getting an error stating
'Unparseable date: "java.util.GregorianCalender[time=1444461352665,areFieldsSet=true,Ienient=truezone=GMT,firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2015,MONTH=9,WEEK_OF_YEAR=41,WEEK_OF_MONTH=2,DAY_OF_MONTH=10,DAY_OF_YEAR=283,DAY_OF_WEEK=7,DAY_OF_WEEK_IN_MONTH=2,AM_PM=0,HOUR=7,HOUR_OF_DAY=7,MINUTE=15,SECOND=52,MILLISECOND=665,ZONE_OFFSET=0DST_OFFSET=0]" (at offset 0)
如果你只是想比较字符串,它看起来像这样:
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_YEAR, 1);
Date tomorrow = calendar.getTime();
DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
String tomorrowAsString = dateFormat.format(tomorrow);
calendar = Calendar.getInstance();
Date today = calendar.getTime();
String todayAsString = dateFormat.format(today);
if(tomorrowAsString.equals(todayAsString))
System.out.println(true);
else
System.out.println(false);
try{
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
String str1 = "9/10/2015";
Date date1 = formatter.parse(str1);
String str2 = "10/10/2015";
Date date2 = formatter.parse(str2);
if (date1.compareTo(date2)<0)
{
System.out.println("date2 is Greater than my date1");
}
}catch (ParseException e1){
e1.printStackTrace();
}
Here is where I'm getting stuck as I'm not sure how to turn the steepingDate into a Date
You need to instantiate a SimpleDateFormat
with a patter that matches the String you saved, and call parse
on it.
and then what is the actual way of comparing the strings, I've tried looking online but there's so many different ways that I've tried and none so far have worked
if you have to compare date to understand if one is less/grater/equal than, then Date has the compareTo method, which returns an int < 0 if this Date is less than the specified Date, 0 if they are equal, and an int > 0 if this Date is greater.
链接地址: http://www.djcxy.com/p/36644.html上一篇: 在java中将日历字符串转换为日历对象
下一篇: 比较两个日期