首页 新闻 会员 周边

时间冲突问题

0
悬赏园豆:5 [已解决问题] 解决于 2013-07-26 08:12

我现在做一个网站,实现一个设备的预约,当预约这个设备时,需要先判断你预约的这段时间内是否有别人预约,比如有人预约了上午8点到11点,后来又有人想预约同一天的10点到13点,这样时间上就冲突了,但是写代码时该如何判断是否冲突。本人用asp.net开发这个网站。

net小民工的主页 net小民工 | 菜鸟二级 | 园豆:201
提问于:2013-07-03 21:07
< >
分享
最佳答案
1
收获园豆:5
Insus.NET | 小虾三级 |园豆:932 | 2013-07-04 11:00

谢谢!您的程序对于我这个小菜鸟来说真的很有用

net小民工 | 园豆:201 (菜鸟二级) | 2013-07-04 21:06
其他回答(4)
1

如果用一个表来存储预约信息的话,它将包含这4个字段:ID,日期(date),开始时间(startTime),结束时间(endTime)

这样检索的时候就简单了

select count(1)
from table T1
where date=@date
and id not in(
    select id 
    from table 
    where date=@date
    and (endTime < @startTime or startTime > @endTime)
)

如果count(1)>0则有冲突

TiestoRay | 园豆:687 (小虾三级) | 2013-07-04 08:42

谢谢!

支持(0) 反对(0) net小民工 | 园豆:201 (菜鸟二级) | 2013-07-04 21:06

数据库的时间存的就是 年月日 时分秒 吧  没必要再弄个日期       还有冲突的情况不止这一种

 


strWhere += "(FStartTime<='" + startDate + "' and FendTime>='" + startDate + "')";
strWhere += " or ";
strWhere += "(FStartTime<='" + endDate + "' and FendTime>='" + endDate + "')";
strWhere += " or ";
strWhere += "(FStartTime>'" + startDate + "' and FStartTime<='" + endDate + "')";
strWhere += " or ";
strWhere += "(FStartTime<='" + startDate + "' and FendTime>='" + startDate + "' and FendTime<'" + endDate + "')";

支持(0) 反对(0) mushishi | 园豆:230 (菜鸟二级) | 2013-07-24 09:43
0

有2个字段一个是这个设备 预约开始时间 和 结束时间 比较一下

chenping2008 | 园豆:9836 (大侠五级) | 2013-07-04 09:25
0

第一个人预约时间的结束时间和第二个人预约时间的开始时间比较

大于就是有冲突 

小于就是没冲突

hzsky | 园豆:202 (菜鸟二级) | 2013-07-04 13:30
0

有好几种情况,   把两个时间段当做两条线段 在纸上画,就很清晰了,有交叉的情况就是有冲突;

求出以上情况是否已有预订就行了

 

mushishi | 园豆:230 (菜鸟二级) | 2013-07-24 09:38

怎么个画法,能教我一下吗?

支持(0) 反对(0) net小民工 | 园豆:201 (菜鸟二级) | 2013-07-25 22:01

@net小民工:    一个线段A表示你已经选择的时间段  , 在它的左边画一个线段B, 从左到右移动。 有交叉就表示有冲突的时间段。   注意线段B的长短可能比A大

支持(0) 反对(0) mushishi | 园豆:230 (菜鸟二级) | 2013-07-28 21:46

@mushishi: 能和我说一下这是那方面的技术吗,我好上网查。我现在还是一个菜鸟中的菜鸟!

支持(0) 反对(0) net小民工 | 园豆:201 (菜鸟二级) | 2013-07-29 14:24

@net小民工: 这个只是想法啦 又不是什么技术  学过数学的应该很好理解

支持(0) 反对(0) mushishi | 园豆:230 (菜鸟二级) | 2013-08-06 11:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册