1

即使日期相等或不相等 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);
}

}
4

3 回答 3

3

compareTo说实话。您刚刚从输出中隐藏了小时、分钟、秒和毫秒。

expiry日期设置为一天(当天的00:00:00.0000第一毫秒),同时cal2仍带有实际时间。

于 2012-11-07T08:51:37.663 回答
1

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

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

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

于 2012-11-07T08:56:54.073 回答
1

compareTo是功能给你解决方案...你可以看看这里。

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

于 2012-11-07T08:53:00.200 回答