javascript如何获取多个时间段关联的时间点
本文介绍了javascript如何获取多个时间段关联的时间点的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
假设有如下时间段
00:00 - 03:00
03:00 - 03:30
01:00 - 03:20
12:30 - 14:00
13:36 - 15:00
此时,03:00
就是一个时间点,因为03:00
都包含在每个时间段内,14:00
或者13:36
是一个时间点
那么,如何在多个时间段内获取这个关联节点呢?只需要一个时间节点就可以了。
或者说我如何将这些时间段分组
[
00:00 - 03:00
03:00 - 03:30
01:00 - 03:20
]
[
12:30 - 14:00
13:36 - 15:00
]
解决方案
就是把同个区间的时间分在一组吧,很简单,先排好序,再找出开始比前一个时间段的结尾要后的就行。
假设时间以 Number 方式存(距离 1 January 1970 00:00:00 UTC 的毫秒数)
时间段结构:
{
start: 1493125454502,
end: 1493125454516
}
function sortTime (times) {
if (times.length <= 1) { return times }
times = times.sort((a, b) => a.start !== b.start ? a.start - b.start : a.end - b.end)
let result = []
let beginIndex = 0
for (let i = 1; i < times.length; i += 1) {
if (times[i].start > times[i - 1].end) {
result.push(times.slice(beginIndex, i))
beginIndex = i
}
}
if (beginIndex !== times.length) {
result.push(times.slice(beginIndex, times.length))
}
return result
}
这篇关于javascript如何获取多个时间段关联的时间点的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文