增加了判断时间重叠的方法
This commit is contained in:
parent
fcdd4a5b9d
commit
55f39f4bff
@ -1,5 +1,6 @@
|
||||
package ink.wgink.util.date;
|
||||
|
||||
import ink.wgink.exceptions.ParamsException;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.joda.time.DateTime;
|
||||
import org.joda.time.format.DateTimeFormat;
|
||||
@ -504,4 +505,79 @@ public class DateUtil {
|
||||
public static String getDateTime(Date date) {
|
||||
return sdfTime.format(date);
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断时间是否重叠
|
||||
*
|
||||
* @param source 源时间
|
||||
* @param target 对比的时间
|
||||
* @return
|
||||
*/
|
||||
public static boolean isTimeOverlap(StartEndTime source, StartEndTime target) {
|
||||
if (source == null) {
|
||||
throw new ParamsException("源时间不能为空");
|
||||
}
|
||||
if (StringUtils.isBlank(source.getStartTime()) || StringUtils.isBlank(source.getEndTime())) {
|
||||
throw new ParamsException("源开始时间或结束时间不能为空");
|
||||
}
|
||||
if (target == null) {
|
||||
throw new ParamsException("目标时间不能为空");
|
||||
}
|
||||
if (StringUtils.isBlank(target.getStartTime()) || StringUtils.isBlank(target.getEndTime())) {
|
||||
throw new ParamsException("目标开始时间或结束时间不能为空");
|
||||
}
|
||||
DateTime sourceStartDateTime = DateTime.parse(source.getStartTime(), DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss"));
|
||||
DateTime sourceEndDateTime = DateTime.parse(source.getEndTime(), DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss"));
|
||||
DateTime targetStartDateTime = DateTime.parse(target.getStartTime(), DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss"));
|
||||
DateTime targetEndDateTime = DateTime.parse(target.getEndTime(), DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss"));
|
||||
// 源开始时间在源结束时间之后,错误
|
||||
if (sourceStartDateTime.isAfter(sourceEndDateTime)) {
|
||||
throw new ParamsException("源开始时间不能在源结束时间之后");
|
||||
}
|
||||
// 目标开始时间在目标结束时间之后,错误
|
||||
if (targetStartDateTime.isAfter(targetEndDateTime)) {
|
||||
throw new ParamsException("目标开始时间不能在目标结束时间之后");
|
||||
}
|
||||
// 源开始时间在目标时间之后,不重叠
|
||||
if (sourceStartDateTime.isAfter(targetEndDateTime)) {
|
||||
return false;
|
||||
}
|
||||
// 源结束时间在目标开始时间之前,不重叠
|
||||
if (sourceEndDateTime.isBefore(targetStartDateTime)) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 开始和结束时间
|
||||
*/
|
||||
public static class StartEndTime {
|
||||
private String startTime;
|
||||
private String endTime;
|
||||
|
||||
public StartEndTime() {
|
||||
}
|
||||
|
||||
public StartEndTime(String startTime, String endTime) {
|
||||
this.startTime = startTime;
|
||||
this.endTime = endTime;
|
||||
}
|
||||
|
||||
public String getStartTime() {
|
||||
return startTime == null ? "" : startTime.trim();
|
||||
}
|
||||
|
||||
public void setStartTime(String startTime) {
|
||||
this.startTime = startTime;
|
||||
}
|
||||
|
||||
public String getEndTime() {
|
||||
return endTime == null ? "" : endTime.trim();
|
||||
}
|
||||
|
||||
public void setEndTime(String endTime) {
|
||||
this.endTime = endTime;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user