Я думаю, вы забыли проверить, совпадают ли даты миллисекунды.
Это исходный код метода compareTo.
public int compareTo(Date anotherDate) {
long thisTime = getMillisOf(this);
long anotherTime = getMillisOf(anotherDate);
return (thisTime<anotherTime ? -1 : (thisTime==anotherTime ? 0 : 1));
}
Как вы можете видеть, этот метод сравнивает две даты, используя миллисекунды как «временной шаг».
Код для старого API:
Этот код проверяет, если два дня то же самое. (Без часов, минут, секунд и миллисекунд)
Date date1; //Your initial date
Date date2; //Your initial second date
//Remove hours, minutes, seconds and milliseconds by creating new "clean" Date objects
Date compare1 = new Date(date1.getYear(), date1.getMonth(), date1.getDay());
Date compare2 = new Date(date2.getYear(), date2.getMonth(), date2.getDay());
if(compare1.compareTo(compare2) == 0){
}
Но я предлагаю не использовать Дата для этой задачи. Поскольку getYear, getMonth и т.д. методы устарели, я предлагаю вам взглянуть на новые API, как GregorianCalendar и Calendar
Код для нового API
Этот код проверяет, если два дня то же самое, включая часов и минут. Но без секунд и миллисекунд.
Date date1;
Date date2;
Calendar compareCalendar1 = Calendar.getInstance();
Calendar compareCalendar2 = Calendar.getInstance();
compareCalendar1.setTime(date1);
compareCalendar2.setTime(date2);
//Set for both calendars the seconds and milliseconds to 0
compareCalendar1.set(Calendar.MILLISECOND, 0);
compareCalendar1.set(Calendar.SECOND, 0);
compareCalendar2.set(Calendar.MILLISECOND, 0);
compareCalendar2.set(Calendar.SECOND, 0);
if(compareCalendar1.compareTo(compareCalendar2) == 0){
}
вы проверить, если миллисекунды одинаковы? –
установите обе свои даты в секундах и миллисекундах до нуля. –
напечатайте обе даты, используя date.getTime() и посмотрите разницу. –