重叠两个日期范围

时间:2014-08-14 04:29:35

标签: java java-ee

给定两个日期范围,两个日期范围是否重叠?

例如,假设我们的范围由DateTime变量StartDate1EndDate1StartDate2EndDate2表示。

例如:

(A) StartDate1- 14-08-2014   EndDate1 - 14-08-2015
    StartDate2- 14-08-2012   EndDate2 - 14-08-2013

(B) StartDate1- 14-08-2014   EndDate1 - 14-08-2015
    StartDate2- 14-08-2013   EndDate2 - 14-08-2014

(C) StartDate1- 14-08-2014   EndDate1 - 14-08-2015
    StartDate2- 15-08-2014   EndDate2 - 13-08-2015

(D) StartDate1- 14-08-2014   EndDate1 - 14-08-2015
    StartDate2- 14-08-2015   EndDate2 - 14-08-2016

(E) StartDate1- 14-08-2014   EndDate1 - 14-08-2015
    StartDate2- 15-08-2015   EndDate2 - 15-08-2016

1 个答案:

答案 0 :(得分:-1)

没有重叠:

Start1>结束2(之后)或结束1< START2(前)

所以重叠将是 NOT(Start1> End2 OR End1< Start2)

请注意,为了使用“<”或“>” ,您可以使用Date.getTime()来获取更长的日期。

    SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");      
    long Start1 =sdf.parse("14-08-2014").getTime();
    long End1=sdf.parse("14-08-2015").getTime();
    long Start2=sdf.parse("14-08-2012").getTime();
    long End2=sdf.parse("14-08-2013").getTime();
    System.out.println("overlapped :" +!((Start1>End2)||(End1<Start2)));