2016-06-01 3 views
-2

날짜 범위가 다른 날짜 범위를 넘나는지 확인해야합니다.Java 새로운 날짜 범위가 다른 날짜 범위 사이에/교차하는지 확인하십시오.

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; 
    } 
} 

EDIT (여전히 작동하지 않는)

업데이트 코드 : 여기에 (하지 예상대로 작동) 기존 코드입니다.

if (!(newPeriodStartDate.getTime() <= p.getExistingPeriodEndDate().getTime()) 
             && (newPeriodEndDate.getTime() <= p.getExistingPeriodStartDate().getTime())) { 
    ... 
} 

편집 2 : 내가 뭘 놓친 거지

이 중복 질문이지만, 그 질문에 대한 대답은 내 문제가 해결되지 않았다. 블로그 게시물 (http://baodad.blogspot.com/2014/06/date-range-overlap.html)로 해결할 수있었습니다.

+1

http://stackoverflow.com/questions/18938152/check-if-two-date-periods-overlap –

+1

http://stackoverflow.com/questions/325933/결정 - 여부 - 두 날짜 범위 - 오버랩 –

+0

나는 그가 throw하는 방법을 묻는 것 같아 – sbowde4

답변

0

마지막으로,이 일 :

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; 
      } 
     } 
관련 문제