如何将PHP date()生成的日期转为整型以实现与当前日期的比较
PHP日期转整型及时间比较实现方案
核心原理
PHP提供strtotime()函数,可直接将符合规范的日期字符串(包含你用到的带am/pm的12小时制格式)转换为秒级Unix时间戳(整型,值为1970-01-01 00:00:00 UTC到对应时间的秒数),直接比较整型数值大小即可判断时间先后。
方法1:PHP代码层处理
适合PHP变量之间的时间比较:
- 转换指定日期为整型时间戳:
$targetTimestamp = strtotime("2021-04-14 02:26:05am"); - 转换你生成的
$date变量为整型时间戳:$currentTimestamp = strtotime($date); - 比较逻辑:
if ($currentTimestamp > $targetTimestamp) { // 满足"晚于指定日期"条件的业务逻辑 }
- 优化点:如果你需要的是当前时间的时间戳,无需先生成日期字符串再转换,直接调用
time()函数即可拿到当前时间的整型时间戳,性能更高。
方法2:数据库查询时直接筛选(更推荐)
如果你是要从数据库筛选符合条件的数据,直接在SQL层处理效率更高:
- 情况1:数据库
insert_time字段为datetime/date字符串类型
直接在SQL中传入日期字符串比较即可:
SELECT * FROM 表名 WHERE insert_time > '2021-04-14 02:26:05am';
- 情况2:数据库
insert_time字段存储的是整型时间戳
先在PHP中转换目标日期为时间戳,再拼接SQL:
$targetTimestamp = strtotime("2021-04-14 02:26:05am"); $sql = "SELECT * FROM 表名 WHERE insert_time > {$targetTimestamp}";
注意:如果日期字符串格式存在非标准写法,建议先用
DateTime类解析更稳妥,示例:$dateObj = DateTime::createFromFormat('Y-m-d h:i:sa', '2021-04-14 02:26:05am'); $targetTimestamp = $dateObj->getTimestamp();
内容的提问来源于stack exchange,提问作者Khenneth John Tanong
相关产品推荐
相关产品推荐

