【发布时间】:2016-06-01 19:20:22
【问题描述】:
我需要确定某个日期范围是否在/跨越其他日期范围。例如:
New start Date 1: 12/01/2015 (mm/dd/yyyy)
New start Date 2: 03/01/2016 --> Throw error message
New start Date 1: 12/01/2016
New start Date 2: 12/01/2017 --> Throw error message
现有日期范围:
Existing 1: 01/01/2016 - 05/31/2016
Existing 2: 06/05/2017 - 10/31/2017
如果我的新日期落在/与现有日期交叉,我应该生成一条错误消息。这是我现有的代码(未按预期工作):
for (Period p : periodList) {
if (!(newPeriodStartDate.after(p.getExistingPeriodStartDate()))
&& !(newPeriodStartDate.before(p.getExistingPeriodEndDate()))) {
message = "The Period falls between an existing Period: "+p.periodName();
break;
}
if (newPeriodEndDate.after(p.getExistingPeriodStartDate())
&& newPeriodEndDate.before(p.getExistingPeriodEndDate())) {
if (message == null) {
message = " The Period falls between an existing Period: "+p.getPeriodName();
}
break;
}
}
编辑
更新的代码(仍然无法正常工作)。我错过了什么:
if (!(newPeriodStartDate.getTime() <= p.getExistingPeriodEndDate().getTime())
&& (newPeriodEndDate.getTime() <= p.getExistingPeriodStartDate().getTime())) {
...
}
编辑 2:
这是一个重复的问题,但该问题的答案并没有解决我的问题。博文 (http://baodad.blogspot.com/2014/06/date-range-overlap.html) 帮助我解决了问题。
【问题讨论】:
-
我想他是在问如何抛出异常
-
@sbowde4 显然不是。
-
@SotiriosDelimanolis ...你能检查我更新的代码,让我知道我缺少什么
标签: java validation date compare