You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP中如何将计算出的早于09:00的配送时间小时设为09:00

嘿,这个需求我之前做项目的时候刚好碰到过,用PHP的DateTime类来处理最稳妥,给你整理了一个清晰的实现方案👇

实现方案

核心思路

  • 先基于起始时间(当前时间或下单时间)加上配送分钟数,得到初始配送时间
  • 检查初始时间是否落在00:01-08:59区间内
  • 如果符合区间,将时间调整为当天的09:00;其余情况保持原时间不变

完整代码示例

<?php
// 示例配送分钟数,实际可从业务逻辑中获取
$minutes = 150; 

// 起始时间:可以是当前时间,也可以是指定的下单时间
// 比如指定下单时间:new DateTime('2024-05-20 22:45:00')
$startTime = new DateTime();

// 计算初始配送时间
$deliveryTime = clone $startTime;
$deliveryTime->add(new DateInterval("PT{$minutes}M"));

// 提取小时和分钟用于判断
$hour = (int)$deliveryTime->format('H');
$minute = (int)$deliveryTime->format('i');

// 判断是否需要调整时间:00:01到08:59之间
if ($hour < 9 && !($hour === 0 && $minute === 0)) {
    // 调整为当天09:00
    $deliveryTime->setTime(9, 0);
}

// 输出格式化后的配送时间
echo "预计配送时间:" . $deliveryTime->format('Y-m-d H:i:s');
?>

关键细节说明

  • 使用DateTime和DateInterval处理时间加减,避免手动计算时间戳带来的跨天、跨月错误,比如配送时间跨到第二天凌晨的情况也能正确处理
  • 判断条件$hour < 9 && !($hour === 0 && $minute === 0)精准匹配需求:排除了00:00整的情况,只处理00:01到08:59的时间段
  • 如果需要基于固定的起始时间(比如用户下单的具体时间),只需要把new DateTime()替换成指定的时间字符串即可,比如new DateTime('2024-05-20 19:30:00')

内容的提问来源于stack exchange,提问作者Gurkan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 08:27:48