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

PHP date()函数显示昨日日期问题求助(XAMPP离线测试环境)

解决PHP date()显示日期与系统不符的问题

这问题我之前帮朋友排查过,大概率是时区配置错误导致的——PHP默认使用UTC时区,如果你所在时区比UTC早(比如东八区,UTC+8),当系统时间还没到UTC当天的0点时,PHP的date()函数就会输出前一天的日期,但时间戳是基于UTC的绝对时间,所以本身是准确的。下面是具体的修复步骤:

1. 临时修复(单脚本生效)

如果只想在当前PHP文件里修正,直接在脚本开头加上时区设置:

date_default_timezone_set('Asia/Shanghai'); // 替换成你所在的时区,比如Asia/Tokyo、Europe/London等

添加后再调用date(),应该就能和系统日期一致了。

2. 全局永久修复(所有PHP脚本生效)

要让所有项目都生效,得修改PHP的配置文件:

  • 打开XAMPP控制面板,找到Apache模块旁的Config按钮,选择PHP (php.ini)打开配置文件。
  • 在文件里搜索date.timezone,找到类似这样的行:
;date.timezone =
  • 去掉前面的分号注释,设置成你的目标时区,比如:
date.timezone = Asia/Shanghai
  • 保存文件后,重启XAMPP里的Apache服务,配置就会生效。

3. 验证修复是否成功

可以写个简单的测试脚本验证结果:

<?php
echo "当前时间戳:" . time() . "<br>";
echo "当前日期:" . date('Y-m-d H:i:s') . "<br>";
echo "当前时区:" . date_default_timezone_get();
?>

运行后查看日期是否和系统日期一致,时区是否是你设置的选项。

额外提示:数据库时区同步

如果修复PHP后,提取今日数据的查询还是为空,还要检查数据库的时区设置,以MySQL为例:

-- 查看当前时区
SELECT @@global.time_zone, @@session.time_zone;
-- 临时设置时区(重启数据库后失效)
SET GLOBAL time_zone = '+8:00';
SET SESSION time_zone = '+8:00';

要是想永久设置MySQL时区,需要修改my.ini(Windows)或my.cnf(Linux)文件,添加或修改:

default-time-zone = '+8:00'

修改后重启MySQL服务即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 10:02:19