搜尋

首頁  >  問答  >  主體

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:0013:36是一個時間點

那麼,如何在多個時間段內取得這個關聯節點呢?只需要一個時間節點就可以了。

或說我如何將這些時間段分組

[
00:00 - 03:00
03:00 - 03:30
01:00 - 03:20
]

[
12:30 - 14:00
13:36 - 15:00
]

滿天的星座滿天的星座2750 天前585

全部回覆(1)我來回復

  • 習慣沉默

    習慣沉默2017-05-19 10:33:10

    就是把同區間的時間分在一組吧,很簡單,先排好序,再找出開始比前一個時間段的結尾要後的就行。

    假設時間以 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
    }

    回覆
    0
  • 取消回覆