2017-10-19 69 views
1

とすると、開始時刻と終了時刻があります。開始時刻と終了時刻の間の時間を表示する方法

考える例:

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

は今、私はendTimeは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ためだろうと私は「 03:00 AM - 1 hour = 02:00 AM

ので、表示するための最後の時間が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'; 

私はこの問題がPM-AM期間のためだと思います。それをどうすれば解決できますか?助けてください。

+0

をあなたはまさにありえない作業のコードスニペットを投稿してくださいことはできますか? – void

+0

問題は、最初の終了時刻に1日追加する必要があるということです。:) endがstartよりも小さい場合、ローカルvarに1日を追加する必要があります。 – boly38

+0

startTimeが「05:00 PM」でendTimeが「04:00 PM」の場合はどうなりますか?エンドタイムがスタートタイムよりも小さい場合は、それは翌日であると仮定することができますか? – 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

関連する問題