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

PHP如何为指定日期设置下午5点并进行时间比较

解决PHP中为指定日期添加下午5点时间的问题

嘿,这个需求其实很好搞定!你已经算出了$expressFeeDate的日期部分,现在只需要把它和下午5点的时间结合起来就行,这里给你两种靠谱的方法:

方法一:直接字符串拼接(简单直接)

因为你的$expressFeeDate已经是Y-m-d格式(比如2018-01-08),直接在后面拼接下午5点的时间字符串就可以得到你想要的格式:

// 原来的代码
$expressFeeDate = date('Y-m-d', strtotime('+2 days', $arrivaldate_converted));
$todaysDate = date("Y-m-d h:i:sa");

// 拼接生成目标时间(带pm格式)
$expressFeeDateTime = $expressFeeDate . ' 05:00:00pm';
// 输出结果:2018-01-08 05:00:00pm

如果后续需要做时间比较,更推荐生成24小时制的版本(避免am/pm的判断问题):

$expressFeeDateTime24 = $expressFeeDate . ' 17:00:00';

方法二:用strtotime处理(更稳妥)

如果担心$expressFeeDate的格式可能有变化,或者想更灵活地控制时间,用strtotime把日期转换成时间戳,再设置为当天17点,然后格式化输出:

// 把日期转换成当天17点的时间戳
$targetTimestamp = strtotime($expressFeeDate . ' 17:00:00');
// 格式化为你需要的带pm的格式
$expressFeeDateTime = date("Y-m-d h:i:sa", $targetTimestamp);
// 输出结果:2018-01-08 05:00:00pm

额外:时间比较的正确姿势

如果要和当前时间$todaysDate比较,最好把两个时间都转换成时间戳来对比,这样最准确:

// 当前时间转时间戳
$currentTimestamp = strtotime($todaysDate);
// 目标时间转时间戳(用上面的$targetTimestamp即可)

if ($currentTimestamp > $targetTimestamp) {
    echo "当前时间已经超过目标日期的下午5点啦";
} else {
    echo "还没到目标日期的下午5点哦";
}

这个思路应该能完美解决你的问题,试试吧!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:12:00