我有以下代码
$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),依此类推。
答案 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
我希望这会有所帮助