2016-06-01 7 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())) { 
    ... 
} 

EDIT 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 /決定するかどうか2つの日付範囲のオーバーラップ –

+0

私は彼がスローする方法と例外 – 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; 
      } 
     } 
関連する問題