校验时间区划是否重叠或交叉
直接上代码
package com.creaze.study;
import java.util.ArrayList;
import java.util.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.List;
/**
* @author 欧阳锋feng
* @version 1.0
* @email tangziqian0001@163.com
* @createDate 2021/10/9 16:30
* @updateDate 2021/10/9 16:30
**/
public class Test01 {
public static class Aaa {
private Long id;
private Date beginTime;
private Date endTime;
public Long getId() { return id; }
public void setId(Long id) { this.id = id; }
public Date getBeginTime() { return beginTime; }
public void setBeginTime(Date beginTime) { this.beginTime = beginTime; }
public Date getEndTime() { return endTime; }
public void setEndTime(Date endTime) { this.endTime = endTime; }
}
public static void main(String[] args) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
Aaa a = new Aaa();
a.setId(new Long(1));
a.setBeginTime(sdf.parse("09:00:00"));
a.setEndTime(sdf.parse("12:00:00"));
Aaa b = new Aaa();
b.setId(new Long(1));
b.setBeginTime(sdf.parse("12:00:00"));
b.setEndTime(sdf.parse("14:00:00"));
Aaa c = new Aaa();
c.setId(new Long(1));
c.setBeginTime(sdf.parse("12:00:00"));
c.setEndTime(sdf.parse("17:00:00"));
List<Aaa> aaaList = new ArrayList<>();
aaaList.add(a);
aaaList.add(b);
aaaList.add(c);
System.out.println(time(aaaList));
}
public static String time(List<Aaa> aaaList){
for (int i = 0; i<aaaList.size(); i++) {
for (int k = i+1; k<aaaList.size(); k++) {
System.out.print(aaaList.get(i).getBeginTime() + " ");
System.out.print(aaaList.get(i).getEndTime() + " ");
System.out.print(aaaList.get(k).getBeginTime() + " ");
System.out.println(aaaList.get(k).getEndTime());
Boolean flag = IsInterSection(aaaList.get(i).getBeginTime(), aaaList.get(i).getEndTime(), aaaList.get(k).getBeginTime(), aaaList.get(k).getEndTime());
if (!flag) return "第"+(i+1)+"行与第"+(k+1)+"行存在时间的重叠或交叉,请确认后重新提交!";
}
}
return null;
}
public static Boolean IsInterSection(Date startDateOne,Date endDateOne,Date startDateTwo,Date endDateTwo) {
// startDateOne 在 startDateTwo 与 endDateTwo 之间
if (0 <= startDateOne.compareTo(startDateTwo) && startDateOne.compareTo(endDateTwo) < 0) {
return false;
}
// endDateOne 在 startDateTwo 与 endDateTwo 之间
if (0 < endDateOne.compareTo(startDateTwo) && endDateOne.compareTo(endDateTwo) <= 0) {
return false;
}
// startDateTwo 在 startDateOne 与 endDateOne 之间
if (0 <= startDateTwo.compareTo(startDateOne) && startDateTwo.compareTo(endDateOne) < 0) {
return false;
}
// endDateTwo 在 startDateOne 与 endDateOne 之间
if (0 < endDateTwo.compareTo(startDateOne) && endDateTwo.compareTo(endDateOne) <= 0) {
return false;
}
return true;
}
}