How to check a time period is overlapping another time period in the same day.
For example,
EDIT:
Here is the working method:
public boolean isOverlapping(Date start1, Date end1, Date start2, Date end2) {
return start1.compareTo(end2) <= 0 && end1.compareTo(start2) >= 0;
}
And here is proof for everyone to try it:
@Test
public void isOverlapping_base() {
Assert.assertTrue(isOverlapping(getDate(2014, 1, 1),
getDate(2014, 3, 31), getDate(2014, 1, 2),
getDate(2014, 4, 1)));
Assert.assertTrue(isOverlapping(getDate(2014, 1, 2),
getDate(2014, 4, 1), getDate(2014, 1, 1),
getDate(2014, 3, 31)));
Assert.assertTrue(isOverlapping(getDate(2014, 1, 1),
getDate(2014, 4, 1), getDate(2014, 1, 2),
getDate(2014, 3, 31)));
Assert.assertTrue(isOverlapping(getDate(2014, 1, 2),
getDate(2014, 3, 31), getDate(2014, 1, 1),
getDate(2014, 4, 1)));
Assert.assertFalse(isOverlapping(getDate(2014, 1, 1),
getDate(2014, 1, 31), getDate(2014, 3, 1),
getDate(2014, 3, 31)));
Assert.assertFalse(isOverlapping(getDate(2014, 3, 1),
getDate(2014, 3, 31), getDate(2014, 1, 1),
getDate(2014, 1, 31)));
}
Date getDate(int year, int month, int date) {
Calendar working = Calendar.getInstance();
working.set(year, month - 1, date, 0, 0, 0);
working.set(Calendar.MILLISECOND, 0);
return working.getTime();
}