【发布时间】:2020-11-06 05:55:18
【问题描述】:
在 php.ini 中我设置了date.timezone = "Europe/Amsterdam"。重新启动 Apache,phpinfo() 中的输出显示正确的时区(欧洲/阿姆斯特丹)。
现在,当我打印 date('H:i') 时,我得到了 UTC 时间,比我们当地时间晚了 2 小时。
但是当我打印 localtime(time(),true) 时,我仍然得到 UTC 时间,而我期望的是当地时间。
timedatectl 的输出是:
Local time: Thu 2020-07-09 09:15:26 CEST
Universal time: Thu 2020-07-09 07:15:26 UTC
RTC time: Thu 2020-07-09 07:15:27
Time zone: Europe/Amsterdam (CEST, +0200)
System clock synchronized: yes
systemd-timesyncd.service active: yes
RTC in local TZ: no
感谢任何有关获取当地时间的帮助。
更新:
phpinfo() 的输出是:
date/time support enabled
timelib version 2017.09
"Olson" Timezone Database Version 0.system
Timezone Database internal
Default timezone UTC
Directive Local Value Master Value
date.default_latitude 31.7667 31.7667
date.default_longitude 35.2333 35.2333
date.sunrise_zenith 90.583333 90.583333
date.sunset_zenith 90.583333 90.583333
date.timezone Europe/Amsterdam Europe/Amsterdam
所以“date.timezone”是正确的,但与“Default timezone”有什么区别?
当我在脚本上方添加这一行时,时机正好:
date_default_timezone_set('Europe/Amsterdam');
但是PHP date_default_timezone_set reference page 告诉“除了使用此函数在脚本中设置默认时区,您还可以使用 INI 设置 date.timezone 来设置默认时区。”。这就是我所做的,但没有成功。
在脚本中设置默认时区当然是一种变通的解决方法;在 php.ini 中设置它是更好的方法,所以我仍然对如何解决这个问题感兴趣。
【问题讨论】:
-
您确定您编辑了正确的 php.ini 文件吗?
-
是的,我想是的,因为 phpinfo() 中的结果显示了正确的时区
-
我用 phpinfo() 转储更新了问题,并朝着解决方案迈出了一步
-
也许你使用的代码/框架中的某些东西/某处覆盖了设置?你在使用任何框架吗?
-
不错的一个!我正在使用 Wordpress; Wordpress 中的时区设置为 UTC。我将它们更改为欧洲/阿姆斯特丹,但没有效果..