2017-10-19 167 views
1

假設是,我有開始和結束時間。如何顯示開始時間和結束時間之間的時間

給定的例子:

var startTime = '12:30 PM'; 
var endTime = '03:00 AM'; 

現在,我要與間隔5分鐘,3個小時的額外時間從startTime和減1小時的時間,結束時間,以顯示範圍之間的時間。因此,基於給定的時間範圍內的樣品結果將是:

03:30 PM 
03:35 PM 
03:40 PM 
03:45 PM 
03:50 PM 
03:55 PM 
04:00 PM 
04:05 PM 
.... 
.... 
02:00 AM 

顯示第一次將03:30 PM因爲12:30 PM + 3 hours = 03:30 PM

上次顯示將02:00 AM因爲03:00 AM - 1 hour = 02:00 AM

我使用moment.js。這裏是我的代碼:

var startTime = '12:30 PM'; 
var endTime = '03:00 AM'; 

var startTime2 = '12:30 PM'; 
var endTime2 = '05:00 PM'; 

console.log(intervals(startTime, endTime));  // this is not working 
console.log(intervals(startTime2, endTime2)); // this is working 

function intervals(start, end) { 
    var start = moment(start, 'hh:mm a').add(3, 'h'); 
    var end = moment(end, 'hh:mm a').subtract(1, 'h'); 

    var result = []; 
    var current = moment(start); 
    while (current <= end) { 
    result.push(current.format('hh:mm a')); 
    current.add(5, 'minutes'); 
    } 
    return result; 
} 

我的問題是,如果給定的時間

var startTime = '12:30 PM'; 
var endTime = '03:00 AM'; 

將無法​​正常工作。它只有在給定的時間將是

var startTime2 = '12:30 PM'; 
var endTime2 = '05:00 PM'; 

我認爲這個問題是因爲下午至上午時段的工作。我們如何解決這個問題?請幫忙。

+0

能否請您發表究竟心不是工作的代碼片段? – void

+0

問題是你的第一個結束時間需要額外增加1天:)所以如果結束小於開始,你需要添加一天到你的結束本地var。 – boly38

+0

如果startTime是「05:00 PM」,endTime是「04:00 PM」,該怎麼辦?你能簡單地假設,如果endtime小於starttime那麼它是第二天? – void

回答

1

只有這個條件還有:

if(end < start) 
    end = end.add(1, 'd'); 

檢查下面的完整代碼:

var startTime = '12:30 PM'; 
 
var endTime = '03:00 AM'; 
 

 
var startTime2 = '12:30 PM'; 
 
var endTime2 = '05:00 PM'; 
 

 
console.log(intervals(startTime, endTime));  // this is not working 
 
console.log(intervals(startTime2, endTime2)); // this is working 
 

 
function intervals(start, end) { 
 
    var start = moment(start, 'hh:mm a').add(3, 'h'); 
 
    var end = moment(end, 'hh:mm a').subtract(1, 'h'); 
 
    if(end < start) 
 
    end = end.add(1, 'd'); 
 
    var result = []; 
 
    var current = moment(start); 
 
    while (current <= end) { 
 
    result.push(current.format('hh:mm a')); 
 
    current.add(5, 'minutes'); 
 
    } 
 
    return result; 
 
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.19.1/moment.js"></script>

+0

好吧!而已。謝謝。它的工作。保持共享:) – JSmith

相關問題