gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 10:36:42 25 4
gpt4 key购买 nike

我有两个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com