php - 将当前时间加 15 分钟,然后确定新时间是否超过午夜
问题描述
我想要:
- 获取当前时间
- 增加 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";
解决方案
你有正确的想法,但$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;
}
推荐阅读
- laravel - Laravel 8日期时区没有改变
- python - ___ 后面的 model.summary 中的 None 是什么意思?
- python - ipyvuetify 按钮并排显示
- flutter - 如何将新项目添加到选择文本菜单?
- javascript - 在 Javascript 中运行新的“转换为图层”命令
- python - python3.7中如何使用yolov2进行语义分割?
- asp.net - 在 Windows 上生成 RDLC 报告可以,但在 Macbook 上不行
- java - 为什么我在服务器上部署后在 rest api java 中得到内容类型 text/html 而不是 application/json?
- server - 如何在 Web 服务器上将全局系统指标分解为每个端点
- amazon-web-services - 使用 Kinesis Firehose 时,VPC 内的 Elasticsearch 经常出现 503 错误