How to compare dates in Java?
Date has before and after methods and can be compared to each other as follows:
if(todayDate.after(historyDate) && todayDate.before(futureDate)) {
// In between
}
For an inclusive comparison:
if(!historyDate.after(todayDate) && !futureDate.before(todayDate)) {
/* historyDate <= todayDate <= futureDate */
}
You could also give Joda-Time a go, but note that:
Joda-Time is the de facto standard date and time library for Java prior to Java SE 8. Users are now asked to migrate to java.time (JSR-310).
Back-ports are available for Java 6 and 7 as well as Android.
How to compare two string dates in Java?
Convert them to an actual Date
object, then call before
.
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd h:m");
System.out.println(sdf.parse(startDate).before(sdf.parse(endDate)));
Recall that parse
will throw a ParseException
, so you should either catch it in this code block, or declare it to be thrown as part of your method signature.
Calculating the difference between two Java date instances
The JDK Date
API is horribly broken unfortunately. I recommend using Joda Time library.
Joda Time has a concept of time Interval:
Interval interval = new Interval(oldTime, new Instant());
EDIT: By the way, Joda has two concepts: Interval
for representing an interval of time between two time instants (represent time between 8am and 10am), and a Duration
that represents a length of time without the actual time boundaries (e.g. represent two hours!)
If you only care about time comparisions, most Date
implementations (including the JDK one) implements Comparable
interface which allows you to use the Comparable.compareTo()
How to compare two dates along with time in java
Since Date
implements Comparable<Date>
, it is as easy as:
date1.compareTo(date2);
As the Comparable
contract stipulates, it will return a negative integer/zero/positive integer if date1
is considered less than/the same as/greater than date2
respectively (ie, before/same/after in this case).
Note that Date
has also .after()
and .before()
methods which will return booleans instead.
How to compare two dates in String format?
For a more generic approach, you can convert them both to Date
objects of a defined format, and then use the appropriate methods:
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = format.parse(date1);
Date date2 = format.parse(date2);
if (date1.compareTo(date2) <= 0) {
System.out.println("earlier");
}
Compare a Date with three or more Date(s) in Java 8?
All you're trying to do here is to compare the date to just one of your "3 or more" dates: you just have to work out which one that is, and then compare two dates.
Since Date
implements Comparable<Date>
, you can use Collections.min
and Collections.max
to find the earliest and latest of them:
Date earliest = Collections.min(Arrays.asList(date1, date2, date3));
Date latest = Collections.max(Arrays.asList(date1, date2, date3));
Then:
boolean beforeEarliest = date.before(earliest);
boolean afterLatest = date.after(latest);
etc.
Comparing two java.util.Dates to see if they are in the same day
Calendar cal1 = Calendar.getInstance();
Calendar cal2 = Calendar.getInstance();
cal1.setTime(date1);
cal2.setTime(date2);
boolean sameDay = cal1.get(Calendar.DAY_OF_YEAR) == cal2.get(Calendar.DAY_OF_YEAR) &&
cal1.get(Calendar.YEAR) == cal2.get(Calendar.YEAR);
Note that "same day" is not as simple a concept as it sounds when different time zones can be involved. The code above will for both dates compute the day relative to the time zone used by the computer it is running on. If this is not what you need, you have to pass the relevant time zone(s) to the Calendar.getInstance()
calls, after you have decided what exactly you mean with "the same day".
And yes, Joda Time's LocalDate
would make the whole thing much cleaner and easier (though the same difficulties involving time zones would be present).
Related Topics
Java.Net.Connectexception :Connection Timed Out: Connect
Execute Jar File with Multiple Classpath Libraries from Command Prompt
Filling Combobox from Database by Using Hibernate in Java
How to Create New Xml File from Existing Database in Postgresql Database Using Java
Using Bufferedreader.Readline() in a While Loop Properly
Extracting Pairs of Words Using String.Split()
No Serializer Found for Class Org.Hibernate.Proxy.Pojo.Bytebuddy.Bytebuddyinterceptor
How to Change the Color of Titlebar in Jframe
How to Find Out If the Value Contained in a String Is Double or Not
Is Asynchronous Jdbc Call Possible
Merging Two JSON Documents Using Jackson
Constantly Update UI in Java Fx Worker Thread
Differences Between Just in Time Compilation and on Stack Replacement
Capturing Browser Logs with Selenium Webdriver Using Java