首页| 版块| 我的| 发帖| 消息
主题:关于global.php时区设置和date()函数、gmdate()函数
zhangjingyu 
gmdate() 的本质
gmdate() 不是"绝对的日期/时间",而是 "始终按 UTC 时区格式化"。
正确理解
“// gmdate() = date() 但强制使用 UTC 时区
gmdate('Y-m-d H:i:s', $timestamp);
// 等价于:
date_default_timezone_set('UTC');
echo date('Y-m-d H:i:s', $timestamp);”(引用内容)
关键区别
函数行为是否受时区影响date()按当前 PHP 时区格式化✅ 是gmdate()按 UTC 时区格式化(忽略当前设置)❌ 否(固定 UTC)“$timestamp = 1785851856;  // 2026-08-04 13:57:36 UTC

// 场景1:PHP 时区 = Asia/Shanghai
date_default_timezone_set('Asia/Shanghai');
echo date('Y-m-d H:i:s', $timestamp);   // 2026-08-04 21:57:36 (北京时间)
echo gmdate('Y-m-d H:i:s', $timestamp); // 2026-08-04 13:57:36 (UTC) ← 不受影响

// 场景2:PHP 时区 = UTC
date_default_timezone_set('UTC');
echo date('Y-m-d H:i:s', $timestamp);   // 2026-08-04 13:57:36 (UTC)
echo gmdate('Y-m-d H:i:s', $timestamp); // 2026-08-04 13:57:36 (UTC) ← 一样”(引用内容)更准确的说法:
gmdate() 是 "固定使用 UTC 时区的 date()"
它不是"绝对的",而是"固定在 UTC"的
zhangjingyu回帖于2026-08-09 21:37[查看电脑版]
«上一楼:“前几天,我们讨论过时区和date()格式化日期的问题,结论是:
date('Y-m-d H:i:s& ..

查看全部回帖(3)
«返回主帖