Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java日期比较失败_Java_Date_Compareto - Fatal编程技术网

Java日期比较失败

Java日期比较失败,java,date,compareto,Java,Date,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[]) thr

即使日期相等或不相等,比较失败。它只是打印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);
}

}

比较
说出了真相。您刚刚从输出中隐藏了小时、分钟、秒和毫秒


expiration
日期设置为
00:00:00.0000
(当天的第一毫秒),而
cal2
仍然携带实际时间。

比较
告诉我们真相。您刚刚从输出中隐藏了小时、分钟、秒和毫秒


expiration
日期设置为
00:00:00.0000
(该天的第一毫秒),而
cal2
仍然携带实际时间。

比较
是函数为您提供的解决方案。。。 你可以看看这里


比较
是该函数为您提供的解决方案。。。 你可以看看这里


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

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

这将显示两个日历实例的精确时间。

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

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

这将显示两个日历实例的精确计时。

您从未设置
cal2
。您的代码打印以下内容:
2012-11-09 2012-11-07 2012-11-07结果是:-1
Calendar cal2=Calendar.getInstance();这足够让你today@Tichodroma我得到了cal1和cal2的sop。我建议你试试Joda Time,因为它有像LocalDate这样的类来处理日期,而不用担心时间。感谢我解决了所有问题。你从未设置
cal2
。您的代码打印以下内容:
2012-11-09 2012-11-07 2012-11-07结果是:-1
Calendar cal2=Calendar.getInstance();这足够让你today@Tichodroma我得到了cal1和Cal2的sop,我建议你试试Joda Time,因为它有像LocalDate这样的类来处理日期,而不用担心时间。感谢我解决了所有问题。我同意。尽量避免在println调用中使用dateformatter,你会看到Adreas是怎么说的。我不需要毫秒。我的simpleDateFormat不起作用吗?当然,它适用于
cal1
,但您不能将其用于
cal2
。所以你把一天和一个时间戳进行比较,时间戳的值(几乎)总是会更高(如果天数相等),我同意。尽量避免在println调用中使用dateformatter,你会看到Adreas是怎么说的。我不需要毫秒。我的simpleDateFormat不起作用吗?当然,它适用于
cal1
,但您不能将其用于
cal2
。因此,将一天与时间戳进行比较,时间戳的值(几乎)总是更高(如果天数相等)