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

已设置正确时区但PHP返回时间仍错误的问题排查

问题描述

系统时钟与PHP时区均设置为Asia/Jerusalem,但PHP返回的时间比以色列当地实际时间快1小时。

已完成的检查:

  • 命令行确认时区配置正确:
    php -r "echo date_default_timezone_get();"
    # 输出:Asia/Jerusalem
    
  • 时间输出存在1小时偏移:
    php -r "echo date('Y-m-d H:i:s');"
    # 输出:2022-09-05 11:56:39(比实际当地时间快1小时)
    
  • PHP信息显示时区配置无误:
    php -i | Select-String -Pattern "timezone"
    # 输出:
    # "Olson" Timezone Database Version => 2021.5
    # Timezone Database => internal
    # Default timezone => Asia/Jerusalem
    # date.timezone => Asia/Jerusalem => Asia/Jerusalem
    
可能的原因及解决方法
  • 时区数据库版本过时
    你的PHP使用内部时区数据库,版本为2021.5。以色列的夏令时规则可能在2021年后有更新,旧版本数据库无法正确计算时区偏移。

    • 若为编译安装的PHP,可下载最新的Olson时区数据库文件,替换PHP安装目录下ext/date/lib/zoneinfo中的对应文件;
    • 若为包管理器安装的PHP,直接更新PHP到最新稳定版,或安装系统的tzdata更新包(部分Linux发行版可用)。
  • 系统UTC时钟错误
    PHP的本地时间计算依赖系统UTC时间,而非本地时间。若系统UTC时间不准,即使时区设置正确,也会导致本地时间偏差。执行以下命令检查系统UTC时间:

    date -u
    

    对比实际UTC时间,若不一致需调整系统UTC时钟。

  • 夏令时计算偏差
    以色列夏令时的切换日期可能在2022年有调整,2021.5版本的时区数据库未包含该规则。可执行以下命令验证偏移量:

    php -r "echo 'UTC时间: ' . gmdate('Y-m-d H:i:s') . PHP_EOL . '本地时间: ' . date('Y-m-d H:i:s') . PHP_EOL . '时区偏移: ' . date('P');"
    

    若输出的偏移量为+03:00但实际应是+02:00,则确认是夏令时计算错误,需更新时区数据库。

  • CLI配置文件冲突
    虽然php -i显示date.timezone正确,但CLI模式可能使用单独的配置文件(如php-cli.ini)。执行以下命令查看CLI加载的配置文件路径:

    php -i | Select-String -Pattern "Loaded Configuration File"
    

    打开该文件确认date.timezone确实设置为Asia/Jerusalem,未被其他配置覆盖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 11:24:27