【发布时间】:2016-07-23 13:11:40
【问题描述】:
我很难识别系统中的预订冲突。我开发了一个与我们的核心系统集成的预订系统。存储在我的预订系统中的列数据是:
ResourceID, StartDate, EndDate, StartTime, EndTime
我需要确保当其他用户尝试预订资源时,该资源是可用的。很多人都问过这个问题,但它通常有一个日期和开始和结束时间,或者在开始日期和结束日期之间相交。
如果我只想检查相交的日期或时间,使用的公式是
a=existing_booking
b=new_booking
overlap = a.start < b.end && b.start < a.end;
然后我发现了一篇关于重叠资源的非常好的和有趣的帖子,其中包含开始时间和结束时间Code Logic to prevent clash between two reservations,但它们处理的是多天重复发生的事件。
我需要确保资源是否在 07-23-2016 到 07-29-2016 的 8:50 到 22:00 之间被预订;有人试图在 2016 年 7 月 25 日至 2016 年 7 月 25 日 08:00 至 08:30 预订,因此无法预订,因为它已被预订一空。经过多次搜索后,我似乎找不到这个公式,任何人都可以帮助发布算法或向我发送指向现有答案的链接,因为它让我发疯。
【问题讨论】:
-
为什么 8:00 到 8:30 的预订与 8:50 到 22:00 的预订会发生冲突?
-
如果有人在 2016 年 7 月 23 日 8:50 预订了一辆小巴旅行,并在 2016 年 7 月 29 日 22:00 将其退回,那么如果有人尝试预订2016 年 7 月 25 日 8:00 至 8:30 小巴将不可用。
-
好的,所以这些不是复杂的重复,它们只是简单的间隔。在那种情况下,您不能只结合日期和时间来创建日期时间并使用正常的重叠比较吗?在大多数编程语言中,将日期时间存储为两个单独的值是不常见的。
标签: algorithm