【问题标题】:Compare dates with different different pattern比较具有不同模式的日期
【发布时间】:2013-04-08 08:09:18
【问题描述】:

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

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

我该怎么做

【问题讨论】:

  • 你有 date1date2 - 就像以前一样比较它们。就是这样!
  • 我相信如果您已经有两个有效的日期实例,那么 before、equals、after 将起作用。这不取决于这些实例是如何构建的。

标签: java compare date-format


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      您将 sdf 替换为 sdf2

      改成这段代码就可以了:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-17
        • 1970-01-01
        • 1970-01-01
        • 2012-12-02
        • 1970-01-01
        • 2020-10-01
        相关资源
        最近更新 更多