Java日期期间比较

时间:2011-02-07 18:20:57

标签: java date vector comparison

我想在java中创建一个能够执行以下操作的函数:

  1. 获取包含字段startDateendDate
  2. 的向量中的对象列表
  3. 在包含字段startDateendDate的向量中获取第二个对象列表 并返回truefalse,如果从第一个列表(startDateendDate)的每个日期时段,第二个列表中都有相应的日期。
  4. 但是,第二个列表中的日期可以按连续日期填写。 例如List1(只有一个对象):Object1(开始日期= 01/01/2010,结束日期= 01/01/2013)

    如果提供List2(2个对象):Object1(开始日期= 01/01/2010,结束日期= 01/03/2010)Object2(开始日期= 01/03/2010)截止日期= 01/01/2013) 应该返回true

2 个答案:

答案 0 :(得分:2)

这是一些伪代码...

  1. 创建第三个开始/结束日期列表
  2. 对于第二个列表中的每个开始/结束
    • 如果与第三个列表中的任何现有日期范围重叠,请延长该日期范围
    • 否则只需将其添加到第三个列表
  3. 对于第一个列表中的每个开始/结束(a,b)
    1. 设置已覆盖 = false
    2. 对于第三个列表中的每个开始/结束(c,d)
    3. 如果(c,d)涵盖(a,b)
      • 设置已覆盖 = true
    4. 如果未涵盖,请返回false
  4. 返回true
  5. 要弄清楚上面的“重叠”部分,您需要涵盖以下情况:

    |-----|
      |-|
    

      |-----|
    |---|
    

    |-----|
        |---|
    

      |-|
    |-----|
    

答案 1 :(得分:0)

将所有日期转换为millis since epoch,范围的交集变得微不足道。