c# - 检测重叠重复时间段的算法

标签 c# algorithm datetime time calendar

我正在尝试根据重复发生的天数和时间表来检测事件的冲突。

比这个问题更复杂的版本Algorithm to detect overlapping periods .

我的情况: A 事件在两个日期之间的所有星期二、星期四和星期六上午 8 点到下午 1 点。

B 事件是从上午 11 点到下午 2 点,整个星期二和星期四,在两个日期之间(事件 A 不同)

在这里,我用红色标记了两个事件之间的碰撞。

我花了几个小时试图编写一种算法来检测这两个事件之间是否至少存在一次冲突。

顺便说一句,事件的结束日期 (tend) 可能是不确定的。

是否有现有的算法来管理它?

enter image description here

最佳答案

找出哪一个先结束。如果 A 和 B 都是无限的,那么就选择 future 的某个随机日期。

我假设您的事件每周重复一次(每周都有相同的重复时间)。如果这不是真的,请用最大的重复基础(月/年/任何)替换周。

取您在第一步中选择的日期之前的最后一周。生成那周发生的所有事件(确保您进行了所有检查,因为其中一个事件可能会在此期间开始重复。对于每个事件,您应该有一个具体的开始和结束时间戳。现在检查这些是否重叠。如果至少他们中的一些人会发生碰撞。如果没有,那你就很好。

关于c# - 检测重叠重复时间段的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34657255/

相关文章:

c++ - 如何在最长公共(public)子序列递归算法中保存字符串

algorithm - 删除链表中的第10000个节点

c# - 将时间转换为十进制

java解码LocalDateTime

c# - Application_Start 事件中的请求对象

c# - 为 Kentico 对象生成类

c - 分而治之——返回一个数组

python - Pandas:如何格式化两种类型的日期?

c# - 找不到使用 Json.Net 反序列化 Json 索引数组的方法

c# - 最大还是默认?