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

PHP日期筛选问题:仅按日判断不按月,如何实现指定日期后信息展示?

问题分析与解决方案

嗨,这个问题我太熟啦!你现在遇到的核心问题是直接用字符串格式的日期做比较,咱们一步步拆解清楚:

为什么月份判断不生效?

当你用>=比较d-m-Y(日-月-年)格式的字符串时,PHP是按字符顺序逐位对比的。举个实际例子:
假设当前日期是01-05-2018(5月1日),和你的起始日期28-04-2018(4月28日)比较,第一个字符0比2小,PHP就会直接判定01-05-2018 < 28-04-2018——但实际5月1日明明比4月28日晚,这就是月份判断失效的根源!

两种靠谱的解决方法

方法1:转换成时间戳比较(最稳妥的通用方式)

把日期转换成Unix时间戳(从1970年1月1日到指定时间的秒数),再做数值比较:

<?php
// 直接用time()获取当前时间戳,比先转字符串再转时间戳更高效
$datum = time();
$begindatum = strtotime('28-04-2018');
if ($datum >= $begindatum) {
    echo "test";
}
?>

方法2:用DateTime类处理(面向对象,可读性更强)

PHP 5.2及以上支持DateTime类,能明确指定日期格式,避免解析歧义:

<?php
$datum = new DateTime(); // 默认生成当前日期时间对象
$begindatum = DateTime::createFromFormat('d-m-Y', '28-04-2018');
if ($datum >= $begindatum) {
    echo "test";
}
?>

小提醒

永远不要直接比较d-m-Y、m/d/Y这类非“年-月-日”排序的日期字符串,只有像Y-m-d(比如2018-04-28)这种按从大到小时间单位排序的字符串,直接比较才会符合逻辑,但更稳妥的还是用时间戳或DateTime对象哦~

内容的提问来源于stack exchange,提问作者J. Doe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:31:14