如何在java中没有时间比较日期?
Date currentDate = new Date();// get current date
Date eventDate = tempAppointments.get(i).mStartDate;
int dateMargin = currentDate.compareTo(eventDate);
此代码比较时间和日期!
答案 0 :(得分:36)
尝试比较更改为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));
答案 1 :(得分:3)
您可以编写方法Date withoutTime(Date)
,该方法返回所有时间字段(小时,分钟,秒,毫秒)设置为零的日期副本。然后你可以比较这些。
或者,如果可能,您可以切换到Joda Time。该库已经具有数据类型DateMidnight
,这正是您要寻找的。 p>
答案 2 :(得分:2)
编写自己的方法,不花时间考虑:
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
类并执行相同的方法。
答案 3 :(得分:1)