【问题标题】:Java dates period compareJava 日期期间比较
【发布时间】:2011-02-07 18:20:57
【问题描述】:

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

  1. 获取带有字段startDateendDate 的向量中的对象列表
  2. 在具有startDateendDate 字段的向量中获取第二个对象列表 并返回 truefalse 如果对于第一个列表(startDateendDate)中的每个日期周期,第二个列表中都有相应的日期周期。

但是,第二个列表中的日期期间可以由连续日期填充。 例如 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

【问题讨论】:

  • 好的,到目前为止你尝试了什么?
  • 首先用谷歌搜索这些关键词 java+calendar+date 比较。然后回来告诉我们你的进步程度。

标签: java date vector comparison


【解决方案1】:

这是给你的一些伪代码......

  1. 创建第三个开始/结束日期列表
  2. 对于第二个列表中的每个开始/结束
    • 如果与第三个列表中的任何现有日期跨度重叠,请扩展该日期跨度
    • 否则只需将其添加到第三个列表中
  3. 对于第一个列表中的每个开始/结束 (a, b)
    1. 设置覆盖 = false
    2. 对于第三个列表中的每个开始/结束 (c, d)
    3. 如果 (c,d) 涵盖 (a, b)
      • 设置覆盖 = true
    4. 如果没有覆盖,返回false
  4. 返回真

要弄清楚上面的“重叠”部分,您需要涵盖以下情况:

|-----|
  |-|

 

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

 

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

 

  |-|
|-----|

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 这只是简化了日期比较,但这对于日期来说也是微不足道的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-20
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多