嗨,我正在使用以下方法创建Calendar实例:

Calendar calendarDate=Calendar.getInstance();
            calendarDate.set(2012, 6, 1,0,0,0);
                Date date1=calendar.getTime();


之后,我使用以下命令创建java.util.date实例:

Date date2=new Date(2012 - 1900,7-1, 01);


现在,当我尝试使用以下代码比较日期时:

System.out.println(date2.compareTo(date1));
System.out.println(date1.compareTo(date2));


它打印-1和1而不是0(零)。
谁能帮我找出问题所在?

最佳答案

在设置新日历之前,请尝试清除日历的值。这样可以解决您的问题。

Calendar calendarDate=Calendar.getInstance();
calendarDate.clear();
calendarDate.set(2012, 6, 1,0,0,0);


测试一下:

import java.util.Calendar;
import java.util.Date;

import org.junit.Assert;

public class DateTest {

    @org.junit.Test
    public void test() {
        Calendar calendarDate=Calendar.getInstance();
        calendarDate.clear();
        calendarDate.set(2012, 6, 1,0,0,0);
        Assert.assertEquals(0, calendarDate.getTime().compareTo(new Date(2012 - 1900,7-1, 01)));
    }

}

10-05 17:55