Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.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_Compare_Date Format - Fatal编程技术网

Java 比较不同模式的日期

Java 比较不同模式的日期,java,compare,date-format,Java,Compare,Date Format,比较两个日期的最简单方法,如果我有相同的模式 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date date1 = sdf.parse("2009-12-31"); Date date2 = sdf.parse("2010-01-31"); System.out.println(sdf.format(date1)); System.out.println(s

比较两个日期的最简单方法,如果我有相同的模式

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date date1 = sdf.parse("2009-12-31");
        Date date2 = sdf.parse("2010-01-31");

        System.out.println(sdf.format(date1));
        System.out.println(sdf.format(date2));

        if(date1.after(date2)){
            System.out.println("Date1 is after Date2");
        }

        if(date1.before(date2)){
            System.out.println("Date1 is before Date2");
        }

        if(date1.equals(date2)){
            System.out.println("Date1 is equal Date2");
        }
想要比较两个有不同模式的日期

例如

 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    Date date1 = sdf.parse("2009-12-31");
 SimpleDateFormat sdf2 = new SimpleDateFormat("dd/MM/yyyy");
    Date date2 = sdf2.parse("12/12/2012");

我怎样才能做同样的事情呢?你可以用同样的方法比较日期
SimpleDataFormat
只是一种以不同格式打印(或解析)日期的方法。Java理解它们,并且可以将它们作为日期进行比较,无论您如何格式化它们

即使在解析了两种不同格式的两个不同日期之后,
parse()
方法的输出在这两种情况下都将是一个标准的
java.util.Date
对象。所以你可以像往常一样比较它们


解析它们的格式无关紧要,因为在这两种情况下,最后有2个
java.util.Date
对象,并且比较它们在所有情况下都是相同的。

您将sdf替换为sdf2

更改此代码后,它将工作:

        SimpleDateFormat sdf2 = new SimpleDateFormat("dd/MM/yyyy");
        Date date2 = sdf2.parse("12/12/2012");

您使用了错误的参考sdf而不是sdf2

您得到了
date1
date2
-只需像以前一样比较它们。就这样!我相信,如果你已经有了两个有效的日期实例,那么before,equals,after将起作用。这并不取决于这些实例是如何构造的。