比较具有不同不同模式的日期

时间:2013-04-08 08:09:18

标签: 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(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");
        }

想要比较具有不同模式的2个日期。

例如。

 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");

我怎样才能做同样的事情

3 个答案:

答案 0 :(得分:2)

您可以用同样的方式比较日期。 SimpleDateFormat只是一种在不同格式中打印日期(或从中解析日期)的方法。 Java了解它们并且可以将它们作为日期进行比较,无论您如何格式化它们。

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

您将sdf替换为sdf2

更改为此代码,它将起作用:

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

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