【发布时间】:2019-11-06 01:01:46
【问题描述】:
所以我创建了这个名为isDateOverlapping 的函数。它接受(所有类型的LocalDate):
- 开始日期 1
- 结束日期 1
- 开始日期 2
- 结束日期 2
这个函数的作用是告诉我两个日期是否重叠。
例如,如果我有一个来自2019-06-15 to 2019-06-18 的句点和另一个来自2019-06-15 to 2019-06-12 的句点。它将返回 true,因为 2 个日期期间重叠。
但是我的函数似乎并不总是返回正确的答案。你能帮忙吗?
public boolean isDateOverlapping(LocalDate start1, LocalDate end1, LocalDate start2, LocalDate end2) {
if (start1.isAfter(start2) && start2.isBefore(start1)) {
return true;
} else if (end1.isBefore(end2) && start1.isAfter(start2)) {
return true;
} else if (start1.isAfter(end1) && end2.isBefore(start2)) {
return true;
}
return false;
}
【问题讨论】:
-
如果前期的最后一天恰好是后期的第一个日期,您是否认为一个时间段与另一个时间段重叠?这是一种边缘情况,应该在实现任何东西之前定义。
-
从 2019 年 6 月 15 日到 2019 年 6 月 12 日的另一个时期——那么一个时期可以倒退吗?您是否希望将其与 2019 年 6 月 12 日至 2019 年 6 月 15 日期间相同?
-
对于特殊的边缘情况,如空间隔等。另见我的post
标签: java if-statement time boolean localdate