怎么判断时间安排范围是否包含?

Java_别这样子啊 2012-07-02 03:36:03
这些是某个用户要参加的多场考场的考试安排时间,时间安排冲突我想在详细页标记红色。

1、开始时间2012-07-02 08:00 结束时间2012-07-02 09:00
2、开始时间2012-07-02 08:40 结束时间2012-07-02 10:00
3、开始时间2012-07-02 09:05 结束时间2012-07-02 09:45
4、开始时间2012-07-02 10:00 结束时间2012-07-02 11:00


java怎么判断这多组时间,是否有包含关系? 就是怎么比较时间冲突?我菜鸟,跪求帮助。




...全文
223 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

Java code
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

public class Test {

@SuppressWarnings({ "rawtypes", "unchecked" })
publi……
[/Quote]


哈哈,谢谢大神,按这思路搞定了。
wq6215232 2012-07-02
  • 打赏
  • 举报
回复
少了关键的一部 先对list进行开始时间排序然后再用结束时间和下一个的开始时间比这样会比较好点
[Quote=引用 7 楼 的回复:]

5L哥们好快啊。咱思路一样.....
[/Quote]
huage 2012-07-02
  • 打赏
  • 举报
回复

public static boolean isDate( Date[] date , Date[] dates){

if(date[0].getTime()>dates[0].getTime()){
if(date[0].getTime()<dates[1].getTime()){
return false;
}
}
if(date[0].getTime()<dates[0].getTime()){
if(date[1].getTime()>dates[0].getTime()){
return false;
}

}
if(date[0].getTime()==dates[0].getTime()){
return false;
}

return true ;
}

public static void main(String[] args) throws ParseException {
Map<String, String[]> examtimemap = new LinkedHashMap<String, String[]>();//有序的Map
examtimemap.put("date",new String []{"2012-07-02 08:00","2012-07-02 08:00"});
examtimemap.put("date2",new String []{"2012-07-02 08:40","2012-07-02 10:00"});
examtimemap.put("date3",new String []{"2012-07-02 09:05","2012-07-02 09:45"});
examtimemap.put("date4",new String []{"2012-07-02 10:00","2012-07-02 11:00"});
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm") ;
int i = 0, i2=0 ; ;
for (String key : examtimemap.keySet()) {

for (String key2 : examtimemap.keySet()){
if(i2>i){

String [] dates = examtimemap.get(key) ;
String [] dates2 = examtimemap.get(key2) ;
Date[] date = {dateFormat.parse(dates[0]) ,dateFormat.parse(dates[1])} ;
Date[] date2 = {dateFormat.parse(dates2[0]) ,dateFormat.parse(dates2[1])} ;
if(!isDate( date , date2)){
System.out.println(key +"和"+key2 + "时间有冲突");
}
}
i2= i2+1 ;
}
i=i+1 ;
i2 = 0;
}



}

简单写了一个 你试试看
johnny_ 2012-07-02
  • 打赏
  • 举报
回复
5L哥们好快啊。咱思路一样.....
johnny_ 2012-07-02
  • 打赏
  • 举报
回复
伪代码


首先创建一个class(TestTime)里面存放这几个成员。
String className;//科目名称
Date startTime;//开始时间
Date endTime;//结束时间

声明一个List集合:List<TestTime> list = new ArrayList(TestTime)();
然后有几门课程就去创建几个TestTime对象,并实例化,然后添加到List集合中。
再然后就遍历这个List集合:
for(int i = 0; i < list.size(); i++){
for(int j = i+1; j < list.size(); j++){
//这里将遍历的对象list.get(i)的endTtime和list.get(j)的startTime比较一下就OK了。
}
}
brightyq 2012-07-02
  • 打赏
  • 举报
回复
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

public class Test {

@SuppressWarnings({ "rawtypes", "unchecked" })
public static void main(String[] args) throws Exception{
Map examtimemap = new HashMap<String, String>();
examtimemap.put("starttime1","2012-07-02 08:00");
examtimemap.put("endtime1","2012-07-02 09:00");
examtimemap.put("starttime2","2012-07-02 08:40");
examtimemap.put("endtime2","2012-07-02 10:00");
examtimemap.put("starttime3","2012-07-02 09:05");
examtimemap.put("endtime3","2012-07-02 09:45");
examtimemap.put("starttime4","2012-07-02 10:00");
examtimemap.put("endtime4","2012-07-02 11:00");

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
for(int i = 1 ; i < 4;i++){
Date endtimei = sdf.parse(examtimemap.get("endtime" + i).toString());
for(int j = i + 1;j < 5;j++){
Date startTimej = sdf.parse(examtimemap.get("starttime" + j).toString());
if(endtimei.compareTo(startTimej) > 0){
System.out.println("时间" + j + "与时间" + i + "有冲突");
break;
}
}

}
}
}
huage 2012-07-02
  • 打赏
  • 举报
回复
还有你的Map不要这么装撒 可以该成 Map<String, String[]>这样一组就是一个时间段 取值比较方便
huage 2012-07-02
  • 打赏
  • 举报
回复
将时间转换成毫秒值 进行比较就可以了啊 具体逻辑不是很复杂, 就是几个long型的比较大小 ,
Everliang 2012-07-02
  • 打赏
  • 举报
回复
截取小时进行判断
  • 打赏
  • 举报
回复
Map examtimemap = new HashMap<String, String>();
examtimemap.put('starttime1','2012-07-02 08:00');
examtimemap.put('endtime1','2012-07-02 08:00');
examtimemap.put('starttime2','2012-07-02 08:40');
examtimemap.put('endtime2','2012-07-02 10:00');
examtimemap.put('starttime3','2012-07-02 09:05');
examtimemap.put('endtime3','2012-07-02 09:45');
examtimemap.put('starttime4','2012-07-02 10:00');
examtimemap.put('endtime4','2012-07-02 11:00');


怎么遍历比较包含关系?

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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