开始和结束时间,分为1小时段

dea*_*ifi 2 php strtotime

我有一种timestamp格式的开始和结束时间.我想将它们分成例如1小时的时间段.

$t1 = strtotime('2010-05-06 12:00:00');
$t2 = strtotime('2010-05-06 18:00:00');

$timeslots = array();

while ($t1 < $t2) {
$t1 = $t1 + 3600;
$timeslots[] = $t1;
}

foreach ( $timeslots as $slot ) {
echo date("Y-m-d H:i:s", $slot) . '<br/>';
}
Run Code Online (Sandbox Code Playgroud)

这是最有效的方法,还是有更好,更通用的方式来做到这一点?

偶尔尝试使用不同长度时间段的其他数字时会出现致命错误:允许的内存大小耗尽,这让我认为它不是很有效.虽然现在似乎没有发生......

(我正在建立一个预订系统)

Kev*_*vin 6

你有没有尝试过

while ($t1 < $t2) {
   $t1 = strtotime('+1 hour', $t1);
   $timeslots[] = date('Y-m-d H:i:s', $t1);
}

foreach ( $timeslots as $slot ) {
   echo $slot . '<br/>';
}
Run Code Online (Sandbox Code Playgroud)

有点相同但更清洁.正如所说,strtotime将处理像闰年这样的日期变化.你的PHP内存限制是多少?可能太低了.