【问题标题】:How to compare two different Date Value in Java?如何在 Java 中比较两个不同的日期值?
【发布时间】:2013-08-16 08:22:24
【问题描述】:

我使用的是 RichFaces 日历组件。我使用 Rich Faces 3 并且有两个日历组件。

如何以这种方式比较两个日期值,这两个值中的一个值可能高于另一个值?

这两个值将以这种方式初始化:

Date startDate = new Date();

Date endDate = new Date();

现在我的用户可以在 Rich Faces 日历中选择 DateValues,所选值将保存在变量中。

如何比较这两个值?

问候

【问题讨论】:

  • 我投了反对票。在发布此问题之前,您已显示先前研究的零迹象。
  • Compare dates in Java 的可能重复项

标签: java richfaces


【解决方案1】:

您检查过文档吗?有compareTo()before()after() 等多种方法可供比较,具体取决于您的需要。 您还可以使用getTime() 方法来查找自每个时代以来的毫秒数,然后您可以操作这些以查找时间之间的时间跨度。

http://docs.oracle.com/javase/6/docs/api/java/util/Date.html

【讨论】:

    【解决方案2】:

    您可以使用afterbefore 方法

    startDate.before(endDate);
    startDate.after(endDate);
    

    由于Date 实现Comperable<Date>,方法compareTo 也可以正常工作。

    【讨论】:

      【解决方案3】:

      您可以使用DatecompareTo方法进行比较

      compareTo(Date anotherDate) 方法返回

      如果参数 Date 等于此 Date,则值为 0;少一个值 如果此 Date 在 Date 参数之前,则大于 0;和更大的价值 如果此 Date 在 Date 参数之后,则大于 0。

      【讨论】:

        【解决方案4】:

        compareTo(Date date) 是 Date 类的一个方法,用于比较两个日期 这个方法:

        • 如果两个日期相等,则返回值为 0。

        • 如果 Date 在 date 参数之后,则返回值大于 0。

        • 如果 Date 在日期参数之前,则返回值小于 0。

           SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
          Date date1 = sdf.parse("2012-10-31");
          Date date2 = sdf.parse("2013-01-21");
          
          
          if(date1.compareTo(date2)>0){
                          System.out.println("Date1 is after Date2");
                      }else if(date1.compareTo(date2)<0){
                          System.out.println("Date1 is before Date2");
                      }else if(date1.compareTo(date2)==0){
                          System.out.println("Date1 is same as Date2");
                      }else{
                          System.out.println("never gets executed");
                      }
          

        【讨论】:

          【解决方案5】:

          要比较两个日期,您应该使用 compareTo() 方法:

          if(startDate.compareTo(endDate) > 0)
          

          这个方法

          1. 如果日期相等则返回 0
          2. 如果日期在日期参数之后,则返回一个正值
          3. 如果日期早于日期参数,则返回负值

          【讨论】:

            猜你喜欢
            • 2018-01-26
            • 2017-10-23
            • 1970-01-01
            • 1970-01-01
            • 2012-01-12
            • 1970-01-01
            • 1970-01-01
            • 2019-05-11
            相关资源
            最近更新 更多