将当前时间增加15分钟,然后确定新时间是否已超过午夜

时间:2018-08-29 02:26:39

标签: php datetime time

我要:

  • 获取当前时间
  • 增加15分钟
  • 在H:i:s中显示新时间
  • 了解新时间是否已超过午夜

一些例子:

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

1 个答案:

答案 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;
}