我要:
一些例子:
Now is 12:00:00
$plus15 is 12:15:00
$pastmidnight = 0
Now is 23:55:00
$plus15 is 00:10:00
$pastmidnight = 1
我想使用DateTime,但是这种尝试会产生意外的结果:
$now = new DateTime(date('H:i:s'));
$now2 = new DateTime(date('H:i:s'));
$now->modify('+15 minutes'); // try "+23 hours", doesn't set $pastmidnight to 1
if($now < $now2){
$pastmidnight = 1;
}else{
$pastmidnight = 0;
}
echo $pastmidnight . "->" . $now->format('H:i:s') . "\n";
答案 0 :(得分:1)
您的想法正确,但是$now
绝不会小于$now2
,因此您的条件永远不会触发。即使您将15分钟添加到$now2
中,逻辑也不会成立,因为它会始终触发。
要解决此问题,我建议与strtotime('today midnight')
进行比较:
$now = new DateTime(date('H:i:s'));
$now->modify('+15 minutes');
$midnight = new DateTime(strtotime('today midnight'));
if ($now > $midnight) {
$pastmidnight = 1;
}
或使用setTime(0,0)
将DateTime的时间设置为午夜:
$now = new DateTime(date('H:i:s'));
$now->modify('+15 minutes');
$midnight = new DateTime(date('H:i:s'));
$midnight = $now->setTime(0,0);
if ($now > $midnight) {
$pastmidnight = 1;
}
else{
$pastmidnight = 0;
}