JAVA中如何判断两个时间段是否有交集

leopard_ 2010-03-12 05:11:54
比如说现在数据库里 开始时间08:30 结束时间10:30
13:30 15:30
17:30 19:30
. .
. .
. .
不一定是三组数据
我现在要插入一个时间段 开始时间 a 和结束时间 b
这个时间段不能在库中任何一个时间段里 或者不能出现交叉现象
请高手解答!
...全文
2000 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
APOLLO_TS 2010-03-12
  • 打赏
  • 举报
回复
进行空间建立模型发现,开始时间和结束时间是一对空间时间点point(x,y)

x范围(开始时间,终止时间)
y范围(开始时间,终止时间)

原来是一个正方形的平面图像,那插入的时间点不再这个正方形中你说是什么情况呢?

起始时间大于终止时间即可了吧!如果无序,大于MAX(点序列就行了)

换成sql
insert 内容 into table name select fields from tablename where not exists(
加入select判断应该就行了!传入插入值

amos1989 2010-03-12
  • 打赏
  • 举报
回复
看了一下题目,想到一种思路,觉得可以试试,在本机上调试通过.不过仅限于验证时间是否和已经存在的时间段有重叠,这也是你题目标题要求的,没有算出空闲的时间段,不过我相信你看了这段代码以后,要算出空闲时间段也是很容易的一件事.代码我就不写了.这段代码仅仅实现了功能,健壮性不行,如果觉得可以采纳,你自己加几个判断进去罗.. 觉得不好不要拍砖....

package com.ce.exam;

import java.util.ArrayList;
import java.util.List;

public class TimeInsert {

/**
* @param args
*/
public static void main(String[] args) {
String str1 = "13:35";
String str2 = "15:25";
List<String> listB = new ArrayList<String>();
List<String> listE = new ArrayList<String>();
listB.add("09:38");
listE.add("12:35");

listB.add("14:00");
listE.add("17:32");
TimeInsert ti = new TimeInsert();
System.out.println(ti.insertValidate(str1, str2, listB, listE));

}

public boolean insertValidate(String beginDate,String endDate,List<String> beginDateList,List<String> endDateList){
Integer begin = trimChar(beginDate);
Integer end = trimChar(endDate);
List<Integer> beginList = new ArrayList<Integer>();
List<Integer> endList = new ArrayList<Integer>();
for(int i = 0 ; i < beginDateList.size();i++){
beginList.add(trimChar(beginDateList.get(i)));
endList.add(trimChar(endDateList.get(i)));//一个开始时间对应一个结束时间
}
for(int i = 0 ; i < endList.size() ; i ++){
//时间有重叠有三种情况:
//1.插入时间的开始时间小于已经存在的一段时间的开始时间,但结束时间位于开始时间和结束时间之间(重叠)
//2.插入时间的开始时间小于已经存在的一段时间的开始时间,但结束时间大于结束时间(全包含)
//3.插入时间的开始时间大于一段已经存在的时间的开始时间,但是却小于这段时间的结束时间,且结束时间大于这段时间的结束时间
//画一个时间图,可以总结出:他们都是开始时间小于已经存在的一段时间的结束时间,但结束时间大于这段时间的开始时间
if(begin < endList.get(i) && end > beginList.get(i)){
return false; //存在重叠
}
}

return true;
}

//刚时间转换成整型
public Integer trimChar(String str){
int index = str.indexOf(":");
String newString = str.substring(0,index) + str.substring(index+1,str.length());
return Integer.parseInt(newString);
}
}

67,550

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧