给定两个日期范围,两个日期范围是否重叠?
例如,假设我们的范围由DateTime变量StartDate1
到EndDate1
和StartDate2
到EndDate2
表示。
例如:
(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
答案 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)));