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

如何检查时间是否过期?如何用PHP date函数判断截止时间是否超当前时间?

如何检查时间是否过期 & 用PHP判断截止时间是否超出当前时间

嘿,我来帮你搞定这个时间判断的问题~首先得先纠正下你代码里的小误区:date()函数是用来格式化时间戳成可读字符串的,不是用来直接定义固定日期的!你直接传"2018-05-24"给date()的写法是错误的,因为它的第一个参数是格式化规则(比如"Y-m-d"),不是日期字符串。咱们直接用字符串定义固定时间就好啦。

下面给你两种实用的判断方法,按需选择:

方法一:用时间戳比较(简单直接)

时间戳是从1970年1月1日00:00:00到指定时间的秒数,本质是整数,所以直接比大小就很方便。

修正后的代码示例:

// 直接用字符串定义固定时间,不用date()
$start_date = "2018-05-24";
$start_time = "08:37:19";
// 注意:截止时间里的分隔符要改成冒号,不然无法被正确解析
$duration = "2018-05-25 09:00:00";

// 将截止时间转成时间戳
$deadline_timestamp = strtotime($duration);
// 获取当前时间的时间戳(time()直接返回当前时间戳)
$current_timestamp = time();

// 核心判断逻辑
if ($deadline_timestamp < $current_timestamp) {
    echo "截止时间已过期!";
} else {
    echo "截止时间还没到~";
}

方法二:用DateTime类(灵活强大,推荐复杂场景)

PHP的DateTime类是处理时间的利器,支持时区、时间差计算,还能直接比较对象大小,可读性更强。

代码示例:

// 创建截止时间的DateTime对象
$deadline = new DateTime("2018-05-25 09:00:00");
// 创建当前时间的DateTime对象(不传参数默认就是当前时间)
$current_time = new DateTime();

// 直接比较两个时间对象
if ($deadline < $current_time) {
    echo "截止时间已过期!";
} else {
    echo "截止时间还没到~";
}

// 进阶:计算当前时间和截止时间的差值
$time_diff = $current_time->diff($deadline);
echo "距离截止时间还有:{$time_diff->days}天 {$time_diff->h}小时 {$time_diff->i}分钟";

额外提醒

  • 如果你需要处理时区(比如服务器时区和用户时区不一致),可以在创建DateTime对象时指定时区,比如:new DateTime("2018-05-25 09:00:00", new DateTimeZone("Asia/Shanghai"))
  • strtotime()能解析大部分常见的时间字符串,但复杂格式建议用DateTime::createFromFormat()来精准解析,避免解析错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:02:11