What's a good method to, given two Date objects, compare the difference between their time portion only, completely ignoring Year, Month and Day?
It's quite the opposite of this question.
UPDATE: Here's the final code for future reference:
private long differenceBetween(Date currentTime, Date timeToRun)
{
Calendar currentCal = Calendar.getInstance();
currentCal.setTime(currentTime);
Calendar runCal = Calendar.getInstance();
runCal.setTime(timeToRun);
runCal.set(Calendar.DAY_OF_MONTH, currentCal.get(Calendar.DAY_OF_MONTH));
runCal.set(Calendar.MONTH, currentCal.get(Calendar.MONTH));
runCal.set(Calendar.YEAR, currentCal.get(Calendar.YEAR));
return currentCal.getTimeInMillis() - runCal.getTimeInMillis();
}
Best Answer
If you want to compare the underlying binary (long int) values of the dates, you can do this:
Addendum 1
This technique has the advantage of speed, because it uses the underlying
long
value of theDate
objects directly, instead of converting between ticks and calendar components (which is rather expensive and slow). It's also a lot simpler than messing withCalendar
objects.Addendum 2
The code above returns the time difference as an
int
, which will be correct for any pair of times, since it ignores the year/month/day portions of the dates entirely, and the difference between any two times is no more than 86,400,000 ms (= 1000 ms/sec × 60 sec/min × 60 min/hr × 24 hr/day).