2012-03-13 54 views
2
新的一天

我有以下代碼小時範圍和重置小時

$date = new DateTime($json->date); 
$hour = $date->format('H'); 
$range = range($hour, 23, 3); // get the range for the data to be provided; 
     foreach($json->hourly as $hourlyData){ 

      if(in_array($hourlyData->hour, $range)){ 

       print_r($hourlyData->hour);echo '<br />'; 
      } 
     } 

上面的代碼看起來在當前時間。如果時間是4,那麼它將爲每3小時增加一個回聲,因爲範圍是(4,23,3)。這一切都很好。但是,以上僅適用於當天。但是第二天,我希望範圍被重置,而不是從4開始,它將從1到23.因此範圍將重置爲(1,23,3)等等。

+1

只需添加開始從另一個範圍1和'foreach'嗎? – Gordon 2012-03-13 10:19:12

+0

這就是我所做的:) – Autolycus 2012-03-16 16:58:59

+1

你想我把它作爲答案嗎?或者你會刪除這個問題,因爲解決方案太明顯了? – Gordon 2012-03-16 17:03:43

回答

2

你需要使用的DateInterval不是什麼範圍....

嘗試

$date = new DateTime("2012-4-12 4:20am"); 
$dv = new DateInterval('PT3H'); 
$totalInterval = 20 ; 
echo "<pre>" ; 
echo $date->format('H') , PHP_EOL; 
for($i = 0; $i < $totalInterval; $i++) 
{ 
    $date->add($dv); 
    echo $date->format('H') , PHP_EOL; 

} 

輸出

04 
07 
10 
13 
16 
19 
22 
01 
04 
07 
10 
13 
16 
19 
22 
01 
04 
07 
10 
13 
16 

我希望這有助於