我在Eclipse中编写了以下代码,我认为所有行都应该打印true
,但只有第二行打印true
,有人可以向我解释一下吗?
Date date = new Date();
Calendar cal = Calendar.getInstance();
cal.add(Calendar.WEEK_OF_YEAR, -1);
System.out.println(cal.before(date));
System.out.println(cal.getTime().before(date));
答案 0 :(得分:1)
这是函数Calendar.before(Object when)
:
public boolean before(Object when) {
return when instanceof Calendar
&& compareTo((Calendar)when) < 0;
}
如您所见,它会检查给定对象是否为Calendar
,如果不是,就像您的情况一样,它会返回false
。
答案 1 :(得分:0)
Calendar.before()
将Calendar
实例作为参数。如果您传递任何其他类型的参数(在这种情况下为Date
),则只返回false
。为了使它工作,你必须做这样的事情:
Calendar nowCalendar = Calendar.getInstance();
System.out.println(cal.before(nowCalendar));