PHP-添加30分钟时间的问题


PHP - issue in adding 30 min to time

我面临一个奇怪的问题,我在这里试图做的是使用while循环在指定的时间上增加30分钟,用于多次迭代。下面是我正在尝试的代码,但不确定哪里出了问题。

我的代码

function session_slot_compare(){
$min_count = 3;
$time_now  = '1:30';
$time_now_new = date('H:i', strtotime($time_now));
 $duration_bits[0] = $time_now_new;
$i=0;
while($i<$min_count){
    $time_now_new = date("H:i", strtotime('+30 minutes', $time_now_new));
    $duration_bits[$i] = $time_now_new;
    $i++;
}
print_r($duration_bits);}

预期输出

我实际上希望输出像Array ( [0] => 01:30 [1] => 02:00 [2] => 02:30 )

实际输出

但我得到的输出是Array ( [0] => 01:30 [1] => 00:30 [2] => 00:30 )

原因是在strtotime('+30 minutes', $time_now_new)中传递的第2个参数无效。它应该是一个时间戳,但在您的情况下,它是一个字符串。解决问题的最短方法是再添加一个strtotime()调用,如下所示:

$time_now_new = date("H:i", strtotime('+30 minutes', strtotime($time_now_new)));

它将完全按照你期望的方式工作。