-3

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

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

我该怎么做

4

3 回答 3

2

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

于 2013-04-08T08:12:00.547 回答
1

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

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

于 2013-04-08T08:13:07.793 回答
1

你用 sdf2 替换了 sdf

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

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

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

于 2013-04-08T08:16:42.840 回答