增加了判断时间重叠的方法
This commit is contained in:
parent
fcdd4a5b9d
commit
55f39f4bff
@ -1,5 +1,6 @@
|
|||||||
package ink.wgink.util.date;
|
package ink.wgink.util.date;
|
||||||
|
|
||||||
|
import ink.wgink.exceptions.ParamsException;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.joda.time.DateTime;
|
import org.joda.time.DateTime;
|
||||||
import org.joda.time.format.DateTimeFormat;
|
import org.joda.time.format.DateTimeFormat;
|
||||||
@ -504,4 +505,79 @@ public class DateUtil {
|
|||||||
public static String getDateTime(Date date) {
|
public static String getDateTime(Date date) {
|
||||||
return sdfTime.format(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