一个
java.util.Date对象 是 一种时间戳的-它包含自00:00:00
1970年1月1日,UTC毫秒数。因此,您不能使用标准
Date对象仅包含一天/一个月/一年而没有时间。
据我所知,在标准Java API中,没有真正简单的方法可以通过仅考虑日期(而不是时间)来比较日期。您可以使用class
Calendar并清除小时,分钟,秒和毫秒:
Calendar cal = Calendar.getInstance();cal.clear(Calendar.HOUR_OF_DAY);cal.clear(Calendar.AM_PM);cal.clear(Calendar.MINUTE);cal.clear(Calendar.SECOND);cal.clear(Calendar.MILLISECOND);
对
Calendar包含要与之比较的日期的另一个对象执行相同的操作,然后使用
after()或
before()方法进行比较。
如 java.util.Calendar.clear(int字段) 的Javadoc 中所述 :
该 HOUR_OF_DAY , HOUR 和 AM_PM
字段的独立处理并应用了一天的时间分辨率规则。清除其中一个字段不会重置此日历的一天中的小时值。使用set(Calendar.HOUR_OF_DAY,0)重置小时值。
编辑 -上面的答案是从2010年开始;在Java
8中,程序包中有一个新的日期和时间API,
java.time它比旧的
java.util.Date和
java.util.Calendar类更强大和有用。使用新的日期和时间类别,而不是旧的日期和时间类别。



