网站显示错误的时区



我一直在为这件事伤透脑筋…

  • 服务器位置:旧金山
  • 服务器配置:Ubuntu+LEMP
  • 应用程序:Wordpress

好的,所以我将Ubuntu的时间设置为当前时间,并将时区更改为HST,也就是我所在的时区,然后重新启动cron。

我将php.ini时区设置为太平洋/檀香山,并将Wordpress设置/时区设置为亚太/檀香山

重新启动nginx和php。。。

然而,当我

<?php echo date('e'); ?>

它显示UTC

我遗漏了什么吗?帮助

尝试以下操作,

<?php
date_default_timezone_set('America/Los_Angeles');
echo date_default_timezone_get() . ' => ' . date('e') . ' => ' . date('T');
?>

在脚本中设置时区。

date_default_timezone_set('PST');
date('e');

当您最初启动nginx时,您的系统时区设置为什么?

您是真的关闭了nginx,然后从头开始启动它,还是只是让它重新读取配置文件?(仅供参考:流行的cat /var/run/nginx.pid | xargs kill -HUP不会导致重启。)

你最好的办法可能是做一些类似sudo sh -c "cat /usr/share/zoneinfo/Pacific/Honolulu > /etc/localtime"的事情,从单个应用程序中删除任何时区提及,然后正确地关闭和启动整个服务器。

php.ini文件中,确保设置:

date.timezone = "America/Los_Angeles"

然后使用将服务器时间更改为适当的时区

sudo dpkg-reconfigure tzdata

迟到总比不迟到好,所以我在这里插话。事实上,无论你的INI设置如何,将默认时区设置回UTC都是WordPress和一个奇怪的决定。这个令人愉快的宝石可以在wp-settings.php中找到(链接是干线版本,标记线将来可能会关闭)。

我想他们这样做是为了让他们的内部时间计算变得简单,并建立在一个共同的基础上。我确实理解这背后的意图,但仍然认为这很尴尬,肯定给用户和开发人员(就像我现在一样)带来了很多困惑和麻烦。他们本可以把它藏在里面的。

不管怎样,底线是:在主题或插件中进行自己的时间计算时,一定要事先明确设置时区。

仅仅使用time()并认为自己很适合使用可能会导致头痛。您可以通过get_option('timezone_string')获取设置面板中的设置,例如将其与date_default_timezone_set结合使用。

Weston Ruter很好地总结了这一切,并建议使用PHP的日期和时间相关类,并明确设置它们的时区。

相关内容

  • 没有找到相关文章

最新更新