首页 > 解决方案 > 将当前时间加 15 分钟,然后确定新时间是否超过午夜

问题描述

我想要:

一些例子:

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";

标签: phpdatetimetime

解决方案


你有正确的想法,但$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;
}

或将 DateTime 的时间设置为午夜setTime(0,0)

$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;
}

推荐阅读