我希望有一个忽略java.util.Date的时间部分的compareTo方法。我想有很多方法可以解决这个问题。最简单的方法是什么?
发布于 2010-01-26 21:29:00
Apache commons-lang几乎无处不在。那么这个呢?
if (DateUtils.isSameDay(date1, date2)) {
// it's same
} else if (date1.before(date2)) {
// it's before
} else {
// it's after
}
发布于 2009-09-17 16:15:59
如果你真的想使用java.util.Date,你可以这样做:
public class TimeIgnoringComparator implements Comparator<Date> {
public int compare(Date d1, Date d2) {
if (d1.getYear() != d2.getYear())
return d1.getYear() - d2.getYear();
if (d1.getMonth() != d2.getMonth())
return d1.getMonth() - d2.getMonth();
return d1.getDate() - d2.getDate();
}
}
或者,使用日历(首选,因为getYear()等方法已被弃用)
public class TimeIgnoringComparator implements Comparator<Calendar> {
public int compare(Calendar c1, Calendar c2) {
if (c1.get(Calendar.YEAR) != c2.get(Calendar.YEAR))
return c1.get(Calendar.YEAR) - c2.get(Calendar.YEAR);
if (c1.get(Calendar.MONTH) != c2.get(Calendar.MONTH))
return c1.get(Calendar.MONTH) - c2.get(Calendar.MONTH);
return c1.get(Calendar.DAY_OF_MONTH) - c2.get(Calendar.DAY_OF_MONTH);
}
}
发布于 2009-09-17 16:04:51
我更喜欢直接使用java.util.Date
的Joda库insetad,因为java.util.Date
对日期和时间进行了区分(请参阅YearMonthDay和DateTime类)。
但是,如果您确实希望使用java.util.Date
,我建议您编写一个实用方法;
public static Date setTimeToMidnight(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime( date );
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
return calendar.getTime();
}
https://stackoverflow.com/questions/1439779
复制相似问题