Java date compare失败

时间:2012-11-07 08:47:36

标签: java date compareto

即使日期相等或不相等,CompareTo也会失败。它只打印1。

比较时,CompareTo不会返回0。 !!

这个愚蠢的代码挤我的脑袋。嘿朋友我犯了什么罪?

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class date {

public static void main (String args[]) throws ParseException
{


    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    Date expiry = sdf.parse("2012-11-09");


    System.out.println(sdf.format(expiry));


    Calendar cal1 = Calendar.getInstance();
    Calendar cal2 = Calendar.getInstance();
    cal1.setTime(expiry);
    cal1.add(Calendar.DATE, -2);
    System.out.println(sdf.format(cal1.getTime()));
    System.out.println(sdf.format(cal2.getTime()));
    int j = cal1.compareTo(cal2);

    System.out.println("The result is :" + j);
}

}

3 个答案:

答案 0 :(得分:3)

compareTo说实话。您只是隐藏了输出的小时,分​​钟,秒和毫秒。

expiry日期设置为00:00:00.0000的某一天(当天的第一个毫秒),而cal2仍然保留实际时间。

答案 1 :(得分:1)

compareTo该功能为您提供解决方案...... 你可以看看这里。

http://www.java-examples.com/compare-two-java-date-objects-using-compareto-method-example

答案 2 :(得分:1)

CompareTo比较两个Calendar对象表示的时间值(与Epoch的毫秒偏移量)。如果您使用格式化打印cal1和cal2,您将看到时差。

System.out.println(cal1.getTime());
System.out.println(cal2.getTime());

这将显示两个日历实例持有的确切时间。