2016-11-24 180 views
0

我想创建一个下拉菜单,将当前时间作为开始时间,并且最终会持续到24小时,就像直到24小时之后一样,它会显示每15分钟增量的时间。问题是,当我尝试运行循环开始时间是好的,但下一个循环时间跳转到6小时后。循环内增加时间15分钟

这里是我的代码:

$current_time = date('h:i A'); 
$end_hour  = date("+24 hours", $current_time); 

echo "<option>" . $current_time . "</option>"; 
for($i = 0; $i <= 96; $i++) { 
    echo "<option>" . date("h:i A", $tNow) . "</option>"; 
    $tNow = strtotime('+15 minutes',$current_time); 
} 

输出来作为 下午11时08 4:00 PM 4:15 PM 4:30 PM

等。

回答

3

您可以使用DateTime为:

$now = new DateTime(); 
$end = clone $now; 
$end->modify("+24 hours"); 

while ($now <= $end) { 
    echo "<option>" . $now->format('h:i A'). "</option>"; 
    $now->modify('+15 minutes'); 
} 
+0

greta它为我工作,但什么是克隆? –

+0

使用[clone](http://php.net/manual/en/language.oop5.cloning.php),您可以复制实例化对象而不保留引用,因此对克隆对象所做的任何更新都不会影响原始一。 –

0

有几件事。首先在你的第一行你缺少第二个参数。那么你正在使用$ tNow未定义。

$current_time = date('h:i A', time()); 
$end_hour  = date("+24 hours", strtotime($current_time)); 


$tNow = strtotime($current_time); 
echo "<option>" . $current_time . "</option>"; 
for($i = 0; $i <= 96; $i++) { 
    echo "<option>" . date("h:i A", $tNow) . "</option>"; 
    $tNow = strtotime('+15 minutes', $tNow); 
} 
+0

第二个参数是可选。如果没有给出,则使用当前日期。 –

+0

@Matei Mihai谢谢你忘记了! – Gacci