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

如何在PHP中将MySQL存储的长格式时间戳转换为标准日期时间

错误原因

你拿到的20211024090000不是Unix时间戳,是按年月日时分秒顺序拼接的数字格式时间,符合YYYYMMDDHHIISS的拼接规则。
PHP的date()函数第二个参数要求传入Unix时间戳(1970-01-01 00:00:00 UTC到目标时间的秒数),你传入的数值远大于当前正常的Unix时间戳范围,所以解析出来的时间会跳转到几十万年后。

解决方法

PHP端转换

直接用DateTime类的格式解析方法处理即可,示例代码:

$rawTime = '20211024090000';
$dateObj = DateTime::createFromFormat('YmdHis', $rawTime);
echo $dateObj->format('m/d/Y H:i:s');
// 输出结果为 10/24/2021 09:00:00

MySQL端直接转换

如果是查询数据时需要直接格式化,可以用MySQL内置的STR_TO_DATE函数处理,示例查询语句:

-- 直接转成日期时间格式
SELECT STR_TO_DATE(你的时间字段名, '%Y%m%d%H%i%s') AS format_time FROM 你的表名;

-- 如果需要转成Unix时间戳给PHP后续处理,可以嵌套UNIX_TIMESTAMP函数
SELECT UNIX_TIMESTAMP(STR_TO_DATE(你的时间字段名, '%Y%m%d%H%i%s')) AS unix_time FROM 你的表名;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 17:45:03