小时范围并重置新的一天的小时数

时间:2012-03-13 10:06:39

标签: php

我有以下代码

$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 个答案:

答案 0 :(得分: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

我希望这会有所帮助