比较日期没有时间

可能重复:
如何在没有时间部分的情况下比较两个日期?

如何在java中没有时间比较日期?

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

此代码比较时间和日期!

尝试比较更改为00:00:00的日期(如此function):

 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)); 

您可以编写方法Date withoutTime(Date) ,该方法返回所有时间字段(小时,分钟,秒,毫秒)设置为零的日期副本。 然后你可以比较这些。

或者,如果可能,您可以切换到Joda Time。 该库已经具有数据类型DateMidnight ,这是您正在寻找的。

使用truncate函数: http : //commons.apache.org/lang/api-2.5/org/apache/commons/lang/time/DateUtils.html

编写自己的方法,不考虑时间:

 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类并执行相同的方法。