Сравните дату без времени

Возможный дубликат:
Как сравнить два дата без временной части?

Как сравнить дату без времени в java?

Date currentDate = new Date();// get current date           
Date eventDate = tempAppointments.get(i).mStartDate;
int dateMargin = currentDate.compareTo(eventDate); 

этот код сравнивает время и дату!

Ответ 1

Попробуйте сравнить даты, изменяющиеся до 00:00:00 своего времени (как это делает функция):

public static Date getZeroTimeDate(Date fecha) {
    Date res = fecha;
    Calendar calendar = Calendar.getInstance();

    calendar.setTime( fecha );
    calendar.set(Calendar.HOUR_OF_DAY, 0);
    calendar.set(Calendar.MINUTE, 0);
    calendar.set(Calendar.SECOND, 0);
    calendar.set(Calendar.MILLISECOND, 0);

    res = calendar.getTime();

    return res;
}

Date currentDate = new Date();// get current date           
Date eventDate = tempAppointments.get(i).mStartDate;
int dateMargin = getZeroTimeDate(currentDate).compareTo(getZeroTimeDate(eventDate));

Ответ 2

Вы можете написать метод Date withoutTime(Date), который возвращает копию даты, в которой все поля времени (час, минута, секунда, милли) установлены на ноль. Затем вы можете сравнить их.

Или, если возможно, вы можете переключиться на Joda Time. Эта библиотека уже имеет тип данных DateMidnight, который вы ищете.

Ответ 4

Напишите свой собственный метод, который не учитывает время:

public static int compareDate(Date date1, Date date2) {
    if (date1.getYear() == date2.getYear() &&
        date1.getMonth() == date2.getMonth() &&
        date1.getDate() == date2.getDate()) {
      return 0 ;
    } 
    else if (date1.getYear() < date1.getYear() ||
             (date1.getYear() == date2.getYear() &&
              date1.getMonth() < date2.getMonth()) ||
             (date1.getYear() == date2.getYear() &&
              date1.getMonth() == date2.getMonth() &&
              date1.getDate() < date2.getDate()) {
      return -1 ;
   }
   else {
     return 1 ;
   }
}

Обратите внимание, что методы getYear(), getMonth() и getDate() устарели. Вы должны пройти класс Calendar и выполнить тот же метод.