javascript - 如何使用 JavaScript 查找日期数组中的日期交叉点/冲突

标签 javascript algorithm date

我有一个事件,其中包含将要举办的研讨会列表。每个研讨会可以召开多次 session 。界面如下所示:

interface Workshop {
    ...
    meetings: WorkshopMeeting[];
}

interface WorkshopMeeting {
    id: number;
    startDate: Date;
    endDate: Date;
}

我的最终对象有一系列 Workshop,例如:

const event = {
  // ... other data
  workshops: [] as Workshop[]
}

我需要的是找出所有研讨会的 session 之间是否有交集。

例如,我的事件有 2 个工作坊,第一个工作坊计划于 29/03/2022 14:00 开始并于 29/03/2022 18:00 结束,而我的第二个工作坊计划于29/03/2022: 15:00 并于 29/03/2022: 20:00 结束。在本例中,研讨会 2 的 session 与研讨会 1 的 session 同时举行。

我正在尝试创建一个算法来查找这些日期冲突,但我没有取得很好的进展。

我尝试了一些循环,但找不到比较逻辑

最佳答案

Moment JS 可以帮助你:

const date1 = [moment("2016-12-06 11:00"), moment("2016-12-06 12:00")];
const date2 = [moment("2016-12-06 10:00"), moment("2016-12-06 13:00")];

const range  = moment.range(date1);
const range2 = moment.range(date2);

// has overlapping
if(range.overlaps(range2)) {
    if((range2.contains(range, true) || range.contains(range2, true)) && !date1[0].isSame(date2[0]))
    alert("time range 1 is completely conflict with time range 2 and vice versa");
  else
    alert("time range 1 is partially conflict with time range 2 and vice versa");

关于javascript - 如何使用 JavaScript 查找日期数组中的日期交叉点/冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71665715/

相关文章:

android - 通过代码获取昨天的日期

javascript - GWT:使用 JsDate 和 Java Date

javascript - 使用 RSelenium 和 rvest 抓取动态 Javascript 页面

c - 调试错误: Kruskal Algorithm, ADT

c - 在 c 或 c++ 中具有负值的子集总和

algorithm - 如何在退化树中找到从特定顶点开始的所有等价路径?

php - php 中当月的第一天使用 date_modify 作为 DateTime 对象

javascript - ParseInt 16 基数转 10 基数

javascript - 更改 html span 内部文本

javascript - 如何在 react 中显示损坏的 HTML?