Javascript 如何处理冲突的日程事件?

Javascript 如何处理冲突的日程事件?,javascript,algorithm,events,logic,scheduling,Javascript,Algorithm,Events,Logic,Scheduling,我有一个问题更多地与逻辑/算法有关,而不是与实际代码(PHP/JS)有关 假设你在一周内有一系列事件发生。每个事件的元数据都存储在数据库中。(Wordpress+活动浓缩咖啡) 即活动A,周一至周五8-5。活动B,星期二至五11-4。等等 用户可以在网站上购买这些活动。我需要确保他们不能购买至少两个时间表冲突的活动 我想尽量避免去DB。有人建议我在结账时检查购物车中冲突的事件ID,然后抛出错误。这是可行的,但如果我一周内有大约12项活动呢?我不能处理(12选2,我想是66)最坏的情况 解决这个问

我有一个问题更多地与逻辑/算法有关,而不是与实际代码(PHP/JS)有关

假设你在一周内有一系列事件发生。每个事件的元数据都存储在数据库中。(Wordpress+活动浓缩咖啡)

即活动A,周一至周五8-5。活动B,星期二至五11-4。等等

用户可以在网站上购买这些活动。我需要确保他们不能购买至少两个时间表冲突的活动

我想尽量避免去DB。有人建议我在结账时检查购物车中冲突的事件ID,然后抛出错误。这是可行的,但如果我一周内有大约12项活动呢?我不能处理(12选2,我想是66)最坏的情况

解决这个问题最快最肮脏的方法是什么?或者更确切地说,解决这个问题的好方法是什么

我正处于时间紧迫的时期,所以目前只能接受客户端的解决方案

谢谢大家!

编辑:这可能是一个更好的问题:假设您有一个事件元数据列表,由开始日期/时间和结束日期/时间组成。如何检查每个事件的冲突

我从来没有做过这样的时间/日程冲突检查,所以不管你想什么,请马上开始


谢谢大家!

按开始时间对事件排序

您的问题可以用一个非常简单的算法来解决——但由于我不熟悉您的数据库,您必须将此算法转换为自己编写的代码:


假设您的事件可以作为列表中的对象访问:事件[0]、事件[1]、,。。。对于成员envent[i]。start和event[i]。end for start和end time(始终假设事件[i])。start Martin Fowler有一篇关于如何处理重复事件的非常有趣的论文。该体系结构也适用于一次性事件。我在.NET应用程序中使用过这种方法,效果非常好。
event[i].start <= event[i+1].start
event[i].end <= event[i+1].start
event[i].start <= event[i+1].start < event[i].end
event[i].end < event[i+1].start    (use < instead of <=)