【发布时间】:2016-08-22 18:40:18
【问题描述】:
我有一个会话到期时间和会话超时值的列表。 所以我可以得到会话开始时间从过期时间中减去超时。
我知道如何检查两个日期是否重叠:
public boolean isOverlapped(LocalDateTime start1, LocalDateTime end1,
LocalDateTime start2, LocalDateTime end2) {
return (start1.isBefore(end2) || start1.equals(end2))
&& (start2.isBefore(end1) || start2.equals(end2));
}
但不知道如何处理日期列表。
结果我想列出最长的重叠(并发)会话链。 感谢任何帮助!
【问题讨论】:
-
“重叠”是日期之间的四位关系。因此,如果每个列表元素都是一个日期,那么列表中的“只有[原文如此] 重叠的日期”意味着什么?
-
您需要设计一组测试数据,其中包含您感兴趣的“重叠”的所有可能含义,并显示输入和预期输出。我不确定你是否清楚你想要的结果是什么。一种可能的明确定义是识别属于多个间隔的时间跨度,然后输出包含这些时间跨度之一的所有间隔。但是,这可能不是您所说的“重叠”。就目前而言,这个问题可能会以“不清楚你在问什么”而结束。
-
您的列表如何保存开始日期和结束日期?