【问题标题】:Java Check if a new date range falls/crossovers between other date ranges [duplicate]Java检查新日期范围是否在其他日期范围之间落入/交叉[重复]
【发布时间】: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) 帮助我解决了问题。

【问题讨论】:

标签: java validation date compare


【解决方案1】:

终于成功了:

 boolean isOverLapped(Date newStartDate, Date newEndDate, Date existingStartDate, Date existingEndDate) throws NullPointerException{
            if (!((newEndDate.getTime() <= existingStartDate.getTime()) 
               || (newStartDate.getTime() >= existingEndDate.getTime()))) {
                return true;
            } else {
                return false;
            }
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多