怎样避免选择重复的时间段

sesea 2008-02-21 03:35:42
有这样一组时间
Date From To Action
02/11/2008 09:00 09:30 Delete
02/11/2008 09:00 10:30 Delete

我的问题如果选择了09:00-09:30这个时间段,如果再选择09:00-10:30就是非法,只能选择当天09:00-09:30以外的时间.
用什么逻辑处理比较好呢?
...全文
207 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lake_cx 2008-02-21
  • 打赏
  • 举报
回复
是挺好的
sesea 2008-02-21
  • 打赏
  • 举报
回复
想到一个方法
用一句查询解决
select * from TimeOff_Detail where ('2008-01-15 13:00' between StartTime and EndTime) or ('2008-01-15 11:00' between StartTime and EndTime)

明天继续
sesea 2008-02-21
  • 打赏
  • 举报
回复
以前在会议室管理系统中用过这个方法.
现在数据库结构基本已固定,做大的修正不太方便.
按时间片处理也挺复杂的,想尽量用一个改动少的方法处理
xxoo2007 2008-02-21
  • 打赏
  • 举报
回复
可以试试将时间分片的思路, 比如 30 分钟为一个时间片,一天有48个时间片段, 用一个数组保存每个时间片段的使用情况, 没有用标记为 1,用了标记为0. 选择时间的时候,根据这个数组进行判断,
规则1: 起始时间必须是可用的
规则2: 结束时间必须是可用的
规则3: 起始时间到结束时间之内的数据都是可用的.
如果是满足规则的,就将整个起始时间到结束时间之间的片段全部设置为已经使用.

这个方法的性能受时间分片大小的影响,如果分片太小可能就没有意义了. 另外对于跨天的处理,应该拆分成到24点的两个时间选择.
sesea 2008-02-21
  • 打赏
  • 举报
回复
时间是存在数据库里,有没有更好的办法呢?
lake_cx 2008-02-21
  • 打赏
  • 举报
回复
几组就只能循环比较呗。。。
sesea 2008-02-21
  • 打赏
  • 举报
回复
DateTime.Compare比较单个时间还好,我这是一组时间段,这方法不太可靠.

from2 > = to1 ¦ ¦ to2 <= from1就通过
这方法比较一组时间还好,如果是好几组就不太好用了
lake_cx 2008-02-21
  • 打赏
  • 举报
回复
from2 >= to1 || to2 <= from1就通过
viena 2008-02-21
  • 打赏
  • 举报
回复
DateTime.Compare比较

111,119

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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