我有一种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)
这是最有效的方法,还是有更好,更通用的方式来做到这一点?
偶尔尝试使用不同长度时间段的其他数字时会出现致命错误:允许的内存大小耗尽,这让我认为它不是很有效.虽然现在似乎没有发生......
(我正在建立一个预订系统)
你有没有尝试过
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内存限制是多少?可能太低了.