I have two Date
s. How can I tell the difference between these two dates in days?
I have heard of SimpleDateFormat
, but I don't know how to use it.
I tried this:
String fromdate = "Apr 10 2011";
SimpleDateFormat sdf;
sdf = new SimpleDateFormat("MMM DD YYYY");
sdf.parse(fromdate);
Calendar cal = Calendar.getInstance();
cal.setTime(sdf);
I also tried this:
String date1 = "APR 11 2011";
String date2 = "JUN 02 2011";
String format = "MMM DD YYYY";
SimpleDateFormat sdf = new SimpleDateFormat(format);
Date dateObj1 = sdf.parse(date1);
Date dateObj2 = sdf.parse(date2);
long diff = dateObj2.getTime() - dateObj1.getTime();
int diffDays = (int) (diff / (24* 1000 * 60 * 60));
System.out.println(diffDays);
but I got the exception "Illegal pattern character 'Y'."
This code should show you how to do what you need...
Here is an article that uses Calendar to solve this problem. http://tripoverit.blogspot.com/2007/07/java-calculate-difference-between-two.html
I believe that Joda Time also provides API support for this scenario
Difference between two date strings in java
this will help you in getting some idea
The other answers are correct but outdated.
java.time
The java.time framework is built into Java 8 and later. These classes supplant the old troublesome date-time classes such as
java.util.Date
,.Calendar
, &java.text.SimpleDateFormat
. The Joda-Time team also advises migration to java.time.To learn more, see the Oracle Tutorial. And search Stack Overflow for many examples and explanations.
Much of the java.time functionality is back-ported to Java 6 & 7 in ThreeTen-Backport and further adapted to Android in ThreeTenABP.
The ThreeTen-Extra project extends java.time with additional classes. This project is a proving ground for possible future additions to java.time.
LocalDate
The
LocalDate
class represents a date-only value without time-of-day and without time zone.I suggest using standard ISO 8601 formats for your strings where possible. But in your case we need to specify a formatting pattern.
Dump to console.
You have two Date objects?
The answer could not be simpler.
Date objects are thin wrappers around a long that contains a UTC POSIX EPOCH time, which is the number of milliseconds that have elapsed since midnight, Jan 1, 1970 UTC. You get your interval number of milliseconds just by subtracting the earlier value from the later. Knowing that, you just divide by the number of milliseconds in a day.
Note that this answer assumes that a day is 86400 seconds and ... that is mostly true.
Note that this solution is still apt even if you have formatted date strings. If you are able to parse your date/times into Date objects first, then you can still call this function with them.