Php can';不要在while循环中添加时间

Php can';不要在while循环中添加时间,php,Php,我试图在while循环中增加时间,但失败了。只要开始时间小于结束时间,我需要每个循环增加20分钟的开始时间。然后,将结果显示在按钮中,供用户选择 $SAM是存储在MySQL数据库中的开始时间,格式为07:00:00 $EAM是存储在MySQL数据库中的结束时间,10:00:00 while(strtotime($SAM) < strtotime($EAM)){ $SAM = new DateTime($SAM); $SAM = $SAM->format('g:i');

我试图在while循环中增加时间,但失败了。只要开始时间小于结束时间,我需要每个循环增加20分钟的开始时间。然后,将结果显示在按钮中,供用户选择

$SAM
是存储在MySQL数据库中的开始时间,格式为
07:00:00

$EAM
是存储在MySQL数据库中的结束时间,
10:00:00

while(strtotime($SAM) < strtotime($EAM)){
    $SAM = new DateTime($SAM);
    $SAM = $SAM->format('g:i');
    $SAMEND = new DateTime($SAM);
    $SAMEND->modify('+20 minutes');
    $SAMENDF = $SAMEND->format('g:i');
    $SAM = new DateTime(strtotime($SAMEND));
    echo '<button style="margin:5px 0px" class="btn btn-primary btn-block">'.$SAM.' - '.$SAMENDF.'</button>';
}
while(strotime($SAM)format('g:i');
$SAMEND=新日期时间($SAM);
$SAMEND->modify(“+20分钟”);
$SAMENDF=$SAMEND->format('g:i');
$SAM=新日期时间(strotime($SAMEND));
回显“.$SAM.-”.$SAMENDF.”;
}

您在对象和字符串上混合了一点,另外,
strotime()
不能接受对象。你似乎做的比你需要的要复杂一些。如果我理解正确,这就是你要找的

您可以直接比较日期时间,如
$SAM<$EAM

$SAM = new DateTime('07:00:00');
$EAM = new DateTime('10:00:00');

while ($SAM < $EAM) {
    $START = $SAM->format('g:i');      // The start value will be equal to the ending of the last one in the previous loop
    $SAM->modify('+20 minutes');       // Increase it for 20 minutes each loop
    $SAMEND = $SAM->format('g:i');     // This will be increased by 20 minutes in relation to $START
    echo '<button style="margin:5px 0px" class="btn btn-primary btn-block">'.$START.' - '.$SAMEND.'</button> ';
}
$SAM=新日期时间('07:00:00');
$EAM=新日期时间('10:00:00');
而($SAM<$EAM){
$START=$SAM->format('g:i');//开始值将等于上一个循环中最后一个值的结尾
$SAM->modify(“+20分钟”);//每循环增加20分钟
$SAMEND=$SAM->format('g:i');//这将比$START增加20分钟
回显“.$START.-”.$SAMEND.”;
}
这将创建一个带有如下按钮的输出

[7:00-7:20][7:20-7:40][7:40-8:00]
[8:00-8:20][8:20-8:40][8:40-9:00]
[9:00-9:20][9:20-9:40][9:40-10:00]

$SAM=新的日期时间(strotime($SAMEND))不起作用,因为此时您正在将一个对象传递到strotime,它需要一个字符串。然后在下一行中,您尝试回显一个对象DateTime。PHP错误日志是解决故障的救命稻草。