
本文介绍如何将 Unix 时间戳(如 1652122994)准确转换为可读的 ISO 8601 日期格式(例如 2022-05-11),重点使用 PHP 的 gmdate() 函数实现时区中立、安全可靠的转换。
本文介绍如何将 unix 时间戳(如 1652122994)准确转换为可读的 iso 8601 日期格式(例如 2022-05-11),重点使用 php 的 `gmdate()` 函数实现时区中立、安全可靠的转换。
Unix 时间戳是一个以秒为单位、自 1970-01-01 00:00:00 UTC(即 Unix 纪元)起计的整数。要将其转换为人类可读的日期(如 2022-05-11),需借助日期格式化函数。在 PHP 中,推荐使用 gmdate() 而非 date(),因为它始终基于 UTC 时间计算,避免因服务器本地时区设置导致的偏差,确保结果一致且可复现。
以下是最简实践代码:
<?php $timestamp = 1652122994;
echo gmdate("Y-m-d", $timestamp); // 输出:2022-05-11
?>
✅ 关键说明:
- "Y-m-d" 是标准日期格式符:Y 表示 4 位年份,m 为补零两位月份,d 为补零两位日期;
- gmdate() 不受 date_default_timezone_set() 影响,适合处理原始时间戳(尤其来自 API 或日志的 UTC 时间);
- 若需本地时区输出(如北京时间),应先用 date_create_from_format('U', $timestamp) 创建 DateTime 对象,再设置时区:
$dt = date_create_from_format('U', $timestamp); $dt->setTimezone(new DateTimeZone('Asia/Shanghai')); echo $dt->format('Y-m-d'); // 输出对应本地日期
⚠️ 注意事项:
- 确保输入为合法整型时间戳(10 位数字),避免字符串或浮点数传入导致返回 False;
- 不要直接使用 date("Y-m-d", $timestamp) 除非已明确配置并信任服务器时区;
- 在 Web 应用中,建议对 $timestamp 做基础校验(如 is_int($timestamp) && $timestamp >= 0 && $timestamp
掌握这一转换逻辑,是处理日志分析、API 数据解析及跨时区时间展示的基础能力。











