无法理解Calendar类的before函数

时间:2016-05-15 09:01:04

标签: java calendar

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

2 个答案:

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