我面临一个奇怪的问题,我在这里试图做的是使用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)));
它将完全按照你期望的方式工作。