2015-10-19 24 views
-1

我試圖讓在指定的時間間隔,每天所有時隙(時間間隔爲2小時i'e 120分鐘)這樣遍歷所有的時間,直到它到達終點的時間與特定間隔

<?php 

$start=strtotime('08:00'); 
$end=strtotime('18:00'); 

for ($i=$start + $k; $i<=$end - 1; $i = $i + 120*60) { 
    echo date('g:i A',$i) . " - " . date('g:i A',$i + 120*60) . '<br>'; 
} 

?> 

上面的代碼輸出

8:00 AM - 10:00 AM 
10:00 AM - 12:00 PM 
12:00 PM - 2:00 PM 
2:00 PM - 4:00 PM 
4:00 PM - 6:00 PM 

我想要得到的輸出類似下面

8:00 AM - 10:00 AM 
9:00 AM - 11:00 PM 
10:00 AM - 12:00 PM 
11:00 AM - 01:00 PM 
12:00 PM - 02:00 PM 
01:00 PM - 03:00 PM 
02:00 PM - 04:00 PM 
03:00 PM - 05:00 PM 
04:00 PM - 06:00 PM 

的時間不應該超過下午6點,我很新的PHP,有人可以請幫助我,謝謝

+0

使用Carbon/DateTime和CarbonInterval/DateTimeInterval。 – Amelia

+0

感謝您的信息,但沒有使用CarbonInterval/DateTimeInterval有什麼方法嗎? – sam

+0

是的,但爲什麼不是你? – Amelia

回答

0

嘗試使用while循環,因爲它使得更容易讀取的代碼。

$start = strtotime('08:00'); 
$end = strtotime('18:00'); 

while ($start <= $end) { 

    // Set dates to display 
    $date1 = $start;   
    $date2 = $start + (120*60); 

    echo date('g:i A',$date1) . " - " . date('g:i A',$date2) . '<br>'; 

    // Increment Start date 
    $start += (60*60); 

} 


// 8:00 AM - 10:00 AM 
// 9:00 AM - 11:00 AM 
// 10:00 AM - 12:00 PM 
// 11:00 AM - 1:00 PM 
// 12:00 PM - 2:00 PM 
// 1:00 PM - 3:00 PM 
// 2:00 PM - 4:00 PM 
// 3:00 PM - 5:00 PM 
// 4:00 PM - 6:00 PM 
// 5:00 PM - 7:00 PM 
// 6:00 PM - 8:00 PM 
+0

是的,它現在更具可讀性,謝謝但上面的輸出是一樣的,你能幫我得到確切的結果嗎?非常感謝 – sam

+0

抱歉 - 已更新的答案。 – MaggsWeb

+0

是的!謝謝!輝煌:) – sam