Java代码
import java.util.Date;
import java.util.List;
/**
* Author: Moses Miao
* Time: 11-12-23 上午12:08
* E-mail: mosesxin@gmail.com
*/
public class TimePeriodUtils {
// 对形如以下格式的时间段排序,注意各个时间段不会有交叉重叠的情况
// 20110101000000-201102015000000, 20110501000000-201107015000000
// 20120101000000-201302015000000, 20111001000000-201112015000000
public void sort(List<TimePeriod> timePeriodList) {
for (int i = 0; i < timePeriodList.size(); i++) {
for (int j = i + 1; j < timePeriodList.size(); j++) {
TimePeriod item1 = timePeriodList.get(i);
TimePeriod item2 = timePeriodList.get(j);
if (item2.getEndTime().compareTo(item1.getStartTime()) <= 0) {
timePeriodList.set(i, item2);
timePeriodList.set(j, item1);
}
}
}
}
// 判断period是否与timePeriodList中的时间段存在交叉重叠情况
// 存在返回true, 否则false
// timePeriodList时间段格式如下
// 20110101000000-201102015000000, 20110501000000-201107015000000
// 20120101000000-201302015000000, 20111001000000-201112015000000
public boolean checkDuplicate(TimePeriod period, List<TimePeriod> timePeriodList) {
Date startTime = period.getStartTime();
Date endTime = period.getEndTime();
for (TimePeriod item : timePeriodList) {
Date startTimeItem = item.getStartTime();
Date endTimeItem = item.getEndTime();
if (startTime.compareTo(startTimeItem) >= 0 && startTime.compareTo(endTimeItem) < 0
|| endTime.compareTo(startTimeItem) > 0 && endTime.compareTo(endTimeItem) <= 0
|| startTimeItem.compareTo(startTime) >= 0 && startTimeItem.compareTo(endTime) < 0) {
return true;
}
}
return false;
}
static class TimePeriod {
private Date startTime;
private Date endTime;
public Date getStartTime() {
return startTime;
}
public void setStartTime(Date startTime) {
this.startTime = startTime;
}
public Date getEndTime() {
return endTime;
}
public void setEndTime(Date endTime) {
this.endTime = endTime;
}
}
}