Java 比较多组日期周期

Java 比较多组日期周期,java,datetime,comparison,Java,Datetime,Comparison,我有3套开始日期和结束日期 第一次-开始日期(2017年1月25日)和结束日期(2017年2月26日) 第二套(2017年1月25日)和结束日期(2017年2月26日) 第三套(2017年3月25日)和结束日期(2017年4月26日) 我想编写一个Java程序来比较这3个集合,并给出两个相等的集合: ((01/25/2017) - (02/26/2017)) 请注意,开始日期和结束日期来自两个不同的变量。org.threeten.extra.LocalDateRange::equals 有关L

我有3套开始日期和结束日期
第一次-开始日期(2017年1月25日)和结束日期(2017年2月26日)
第二套(2017年1月25日)和结束日期(2017年2月26日)
第三套(2017年3月25日)和结束日期(2017年4月26日)

我想编写一个Java程序来比较这3个集合,并给出两个相等的集合:

((01/25/2017) - (02/26/2017))
请注意,开始日期和结束日期来自两个不同的变量。

org.threeten.extra.LocalDateRange::equals
有关
LocalDateRange
类及其方法,请参见项目。此方法将一个
LocalDateRange
与另一个进行比较,以确保这对日期相同

该类依赖于Java 8及更高版本中内置的类。这门课在这个网站上已经上过几百次了。因此,搜索堆栈溢出以获取更多信息

LocalDateRange.of(
    LocalDate.of( 2017 , Month.JANUARY , 25 ) ,
    LocalDate.of( 2017 , Month.FEBRUARY , 26 )      // Returns a `LocalDate` object.
)                                                   // Returns a `LocalDateRange` object.
.equals(
    LocalDateRange.of(
        LocalDate.of( 2017 , Month.MARCH , 25 ) ,
        LocalDate.of( 2017 , Month.APRIL , 26 ) 
    )
)
假的

ChronoUnit.DAYS::介于
如果要比较经过的天数,请使用
ChronoUnit
enum

ChronoUnit.DAYS.between(
    LocalDate.of( 2017 , Month.JANUARY , 25 ) ,
    LocalDate.of( 2017 , Month.FEBRUARY , 26 ) 
)                                                   // Returns a `long` integer primitive.
 == 
ChronoUnit.DAYS.between(
    LocalDate.of( 2017 , Month.MARCH , 25 ) ,
    LocalDate.of( 2017 , Month.APRIL , 26 ) 
)

关于java.time 该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,例如,&

该项目现已启动,建议迁移到类

要了解更多信息,请参阅。并搜索堆栈溢出以获得许多示例和解释。规格是

您可以直接与数据库交换java.time对象。使用兼容的或更高版本。不需要字符串,也不需要
java.sql.*

从哪里获得java.time类

  • 然后
    • 内置的
    • 标准JavaAPI的一部分,带有捆绑实现
    • Java9添加了一些次要功能和修复
    • 大部分java.time功能都在中向后移植到Java6和Java7
    • 更高版本的Android捆绑包实现了java.time类

    • 对于早期的Android(一种方法是创建一个自定义类(
      MyDateSets
      ),该类包含一组开始和结束日期。该类的
      equals
      方法(覆盖
      对象的
      equals
      )指定日期集相等

      示例代码:

      import java.time.*;
      import java.time.format.*;
      public class CompareDateSets {
          public static void main(String [] args) {
              // Parse date strings to LocalDate objects
              // Make 3 set sof them - the input
              DateTimeFormatter parser = DateTimeFormatter.ofPattern("MM/dd/yyyy");
              LocalDate start1 = LocalDate.parse("01/25/2017", parser);
              LocalDate end1 = LocalDate.parse("01/25/2017", parser);
              LocalDate start2 = LocalDate.parse("01/25/2017", parser);
              LocalDate end2 = LocalDate.parse("01/25/2017", parser);
              LocalDate start3 = LocalDate.parse("03/25/2017", parser);
              LocalDate end3 = LocalDate.parse("04/26/2017", parser);
              // Create MyDateSets objects - 3 sets of input
              MyDateSets set1 = new MyDateSets(start1, end1);
              MyDateSets set2 = new MyDateSets(start2, end2);
              MyDateSets set3 = new MyDateSets(start3, end3);
              // Compare each set and print the comparison result
              System.out.println(set1.equals(set2)); // true
              System.out.println(set1.equals(set3));  // false
              System.out.println(set2.equals(set3));  // false
          }
      }
      
      /*
       * Custom class has a set of the start and end dates.
       * Overrides Object class's equals method to define
       * the date set's equality.
       */
      class MyDateSets {
          private LocalDate start;
          private LocalDate end;
          public MyDateSets(LocalDate start, LocalDate end) {
              this.start = start;
              this.end = end;
          }
          public LocalDate getStart() {
              return start;
          }
          public LocalDate getEnd() {
              return end;
          }
          @Override
          public boolean equals(Object o) {
              MyDateSets dates = (MyDateSets) o;
              if ((dates.getStart().equals(start)) &&
                      (dates.getEnd().equals(end))) {
                  return true;
              }
              return false;
          }
      }
      

      这个问题现在已经离题了,请发布你试图解决这个问题的代码。好吧,到目前为止,你的问题归结为解决“如何比较日期”,一旦你能做到这一点,你只需要在你的集合上重复这个过程。我认为问题的核心是“如何设计一个程序来管理和比较日期间隔?”然而,堆栈溢出不是一个设计服务,所以这个问题(据我所知)并不适合这个地方,对不起。