java - 通过java分割重叠的小时和分钟

标签 java date datetime

我有两个 ArrayList,其中包含包含进入和退出的日期时间

进入时间退出时间

<小时/>
  1. '2018-10-04 07:00:00' '2018-10-04 11:00:00'
  2. '2018-10-04 08:00:00' '2018-10-04 08:30:00'
  3. '2018-10-04 09:00:00' '2018-10-04 09:40:00'
  4. '2018-10-04 10:00:00' '2018-10-04 10:30:00'

入口-导出数据在第一个ArrayList中,2到4的数据是另一个ArrayList。

现在,您在顶部看到的入口/导出 1,我需要将时间分为两部分,因为这是对系统进行的手动输入,我将其存储在第一个数组中,其余部分是系统生成的,位于第二个数组。所以从 2 到 4,我无法更改正确的数据。我只需要更改第一个手动输入的记录。我需要使它们不同且不重叠,我的最终结果将是这样的:

   EntryTime                     ExitTime
  1. '2018-10-04 07:00:00' '2018-10-04 07:59:00'
  2. '2018-10-04 08:00:00' '2018-10-04 08:30:00'
  3. '2018-10-04 09:00:00' '2018-10-04 09:40:00'
  4. '2018-10-04 10:00:00' '2018-10-04 10:30:00'
  5. '2018-10-04 08:31:00''2018-10-04 08:59:00'
  6. '2018-10-04 09:41:00' '2018-10-04 09:59:00'
  7. '2018-10-04 10:31:00' '2018-10-04 11:00:00'

粗体日期时间(5 到 7,即结果部分)现在变得清晰且不重叠,而第一部分中的数据从 2 到 4 是相同的。更改的值是从 5 到 7。 我无法思考是否应该循环遍历范围并缩短时间。 如果您需要任何其他信息,请帮助并告诉我。 我搜索了足够多的内容,但找不到所需的答案,或者可能是我不明白。

最佳答案

如果 2-4 个条目按时间顺序排序,您可以循环遍历系统生成的条目,对于 i-th位置,你可以检查 i-th 之间是否有间隙(当前条目)退出日期和 i+1-th (下一个)入职日期,如果有,则查看其他ArrayList查看是否存在在系统生成的“间隙”之前开始并在其之后结束的条目 ArrayList .

伪代码:

for(int i=0; i<arrayList2.size()-1; i++){

  if(arrayList2[i].exitDate is_before arrayList2[i+1].entryDate){

    fillTheGapIfPossible(arrayList2[i], arrayList2[i+1]);

  }

} 

fillTheGapIfPossible(entry1, entry2){

  for(int i=0; i<arrayList1.size(); i++){

    if(arrayList1[i].entry is_before entry1.exitDate &&
       arrayList1[i].exitDate is_after entry2.entryDate){

         makeNewEntry(entry1.exitDate, entry2.entryDate);

    }

  }

}

哪里arrayList2是系统生成的列表。

关于java - 通过java分割重叠的小时和分钟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53237453/

相关文章:

Java DNS 不遵守 AWS CloudMap 循环

java - 通用列表创建时出现问题

java - 使用 @JoinColumn 保留不指向任何 ID 属性的实体

Swift:设置 DateComponents 年份时的意外行为

r - 如何在 x 轴为时间轴的 R 图中绘制箭头?

java - Apache OpenJPA - 仅当数据库中不存在时插入元组

php - MYSQL SELECT 记录早于 1 年前

java - Oracle DATE 和 Hibernate/JPA 映射

python - 如何解析 Chrome 书签文件中的 date_added 字段?

.net - .Net 中是否有描述最小 Windows FileTime 值的常量?