性能调优PHP时间查询

时间:2012-09-18 08:04:11

标签: php mysql date datetime

我想知道我是否可以为下面的PHP脚本做一些性能调整。我想做的是 - 从凌晨00:00到下午23:30每半小时进入一个选择列表。这是代码

<?php
$starttime = '00:00';
$time = new DateTime($starttime);
$interval = new DateInterval('PT30M');
$temptime = $time->format('H:i');
do{
   echo '<option value="">'.date("H:i a", strtotime($temptime)).'</option>';
   $time->add($interval);
   $temptime = $time->format('H:i');
}while ($temptime !== $starttime);
?>

我相信我们可以通过一种更轻松的方式来做到这一点 - 但我无法想到它。有人可以帮忙吗?

4 个答案:

答案 0 :(得分:3)

除了对值进行硬编码之外,您可能会丢失所有DateTimeTimeInterval个对象并使用简单的循环:

for ($h=0;$h<24;$h++) {
    echo '<option>' + sprintf ( "%02d", $h ) + ':00</option>';
    echo '<option>' + sprintf ( "%02d", $h ) + ':30</option>';
}

答案 1 :(得分:2)

如果你正在追求性能,那么对时间字符串进行硬编码可能是你能做的最好的事情。

既然它们不会改变,你真的不需要动态,是吗?

答案 2 :(得分:1)

foreach (range(0, 60*24, 30) as $minutes) {
    echo '<option>' . date('H:i a', strtotime('00:00 +' . $minutes . ' minutes')) . '</option>';
}

答案 3 :(得分:1)

直到24小时,你可以使用好的'for

<select>
    <?php for($i = 0; $i < 48; $i++): ?>
        <option><?php echo $i%2 == 0 ? ($i / 2) . ':00' : intval($i / 2) .':30'; ?></option>
    <?php endfor;?>
</select>