在制作自定义日历时,我无法确定如何找到与任何其他时间段重叠的时间段。
时间段从0到720开始(9am至9pm,每个像素代表一分钟)。
每个时间段为一个小时,例如9点到10点,10点到11点,11点到12点等。
在上面的例子中,三个事件(id:1、2、3)在“9-10”开始时间的时间段重叠:
我正在寻找一种方法来获取所有重叠事件的id以及特定时间段内事件的数量,这是预期输出:
对于id为1到3的数据,时间段9到10有3个事件,时间段6到7有2个事件。
我创建了以下公式来将时间数字转换为实际时间:
这是我目前的进展:
时间段从0到720开始(9am至9pm,每个像素代表一分钟)。
var events = [
{id : 1, start : 0, end : 40}, // an event from 9:00am to 9:40am
{id : 2, start : 30, end : 150}, // an event from 9:30am to 11:30am
{id : 3, start : 20, end : 180}, // an event from 9:20am to 12:00am
{id : 4, start : 200, end : 230}, // an event from 12:20pm to 12:30pm
{id : 5, start : 540, end : 600}, // an event from 6pm to 7pm
{id : 6, start : 560, end : 620} // an event from 6:20pm to 7:20pm
];
每个时间段为一个小时,例如9点到10点,10点到11点,11点到12点等。
在上面的例子中,三个事件(id:1、2、3)在“9-10”开始时间的时间段重叠:
9:00
、9:30
和9:20
。其他重叠的事件在时间段6
到7
(id:5、6)中,其开始时间为6
和6:20
。id为4
的事件在时间段12
到1
中没有任何重叠事件。我正在寻找一种方法来获取所有重叠事件的id以及特定时间段内事件的数量,这是预期输出:
[
{id:1, eventCount: 3},
{id:2, eventCount: 3},
{id:3, eventCount: 3},
{id:5, eventCount: 2},
{id:6, eventCount: 2}
]
对于id为1到3的数据,时间段9到10有3个事件,时间段6到7有2个事件。
我创建了以下公式来将时间数字转换为实际时间:
var start_time = new Date(0, 0, 0, Math.abs(events[i].start / 60) + 9, Math.abs(events[i].start % 60)).toLocaleTimeString(),
var end_time = new Date(0, 0, 0, Math.abs(events[i].end / 60) + 9, Math.abs(events[i].end % 60)).toLocaleTimeString();
这是我目前的进展:
这是我目前的进展:
function getOverlaps(events) {
// sort events
events.sort(function(a,b){return a.start - b.start;});
for (var i = 0, l = events.length; i < l; i++) {
// cant figure out what should be next
}
}