2017-07-28 59 views
0

記錄在我的數據庫是這樣的:什麼是組合日期最有效的方法?

From: 2012-01-16 06:20:00 To: 2012-01-16 06:30:00 
From: 2012-01-16 06:30:00 To: 2012-01-16 06:40:00 
From: 2012-01-16 06:40:00 To: 2012-01-16 06:50:00 

而且我的應用程序裏面我必須將它們合併爲1點的記錄看起來像這樣:

From: 2012-01-16 06:20:00 To: 2012-01-16 06:50:00 

有時記錄不以任何順序。他們可能是這樣的:

From: 2012-01-16 06:20:00 To: 2012-01-16 06:30:00 
From: 2012-01-16 06:40:00 To: 2012-01-16 06:50:00 
From: 2012-01-16 06:30:00 To: 2012-01-16 06:40:00 
+0

這個Timestam()?或選擇的時間? –

+0

它是一個時間戳 – ChristoK

+0

然後訂單必須排序 –

回答

0

如果這是一個時間戳,你可以使用MIN(from)和MAX(to)。

0

可能不是最有效的方式,但我會做這樣的:

let timeRanges = []; 

timeRanges.push({ 
    from: new Date(Date.parse('2012-01-16 06:20:00')), 
    to: new Date(Date.parse('2012-01-16 06:30:00')) 
}); 

timeRanges.push({ 
    from: new Date(Date.parse('2012-01-16 06:40:00')), 
    to: new Date(Date.parse('2012-01-16 06:50:00')) 
}); 

timeRanges.push({ 
    from: new Date(Date.parse('2012-01-16 06:30:00')), 
    to: new Date(Date.parse('2012-01-16 06:40:00')) 
}); 

let combinedTimeRange = { 
    from: null, 
    to: null 
}; 

for(let timeRange of timeRanges) { 
    if(combinedTimeRange.from === null 
    || combinedTimeRange.from.getTime() > timeRange.from.getTime()) { 
     combinedTimeRange.from = timeRange.from; 
    } 

    if(combinedTimeRange.to === null 
    || combinedTimeRange.to.getTime() < timeRange.to.getTime()) { 
     combinedTimeRange.to = timeRange.to; 
    } 
} 

// just a test .. 
console.log(combinedTimeRange.from.getMinutes()); 
console.log(combinedTimeRange.to.getMinutes()); 
相關問題