网站显示错误的时区

时间:2014-01-04 03:25:17

标签: php wordpress ubuntu nginx timezone

我一直在关注这个......

  • 服务器位置:旧金山
  • 服务器配置: Ubuntu + LEMP
  • App: Wordpress

好的,所以我将Ubuntu的时间设置为当前时间,并将时区更改为HST,这是一个Im at并重新启动cron。

我将php.ini时区设置为Pacific / Honolulu并将Wordpress设置/时区设置为Pacific / Honolulu

重新启动nginx和php ...

然而,当我

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

显示 UTC ...

我错过了什么吗?帮助!

5 个答案:

答案 0 :(得分:2)

尝试以下,

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

答案 1 :(得分:0)

在脚本中设置时区。

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

答案 2 :(得分:0)

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

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

您最好的选择可能是执行sudo sh -c "cat /usr/share/zoneinfo/Pacific/Honolulu > /etc/localtime"之类的操作,从各个应用中删除任何时区提及,然后正确关闭并启动整个服务器。

答案 3 :(得分:0)

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

date.timezone = "America/Los_Angeles"

然后使用以下命令将服务器时间更改为适当的时区:

sudo dpkg-reconfigure tzdata

答案 4 :(得分:0)

迟到总比没有好,所以我会在这里说话。它实际上是WordPress以及将默认时区设置回UTC的奇怪决定,无论您的INI设置是什么。这个令人愉快的宝石可以在wp-settings.php中找到(链接用于主干版本,标记的行可能在将来关闭)。

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

无论如何,底线是:在主题或插件中进行自己的时间计算时,请务必事先明确设置时区。

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

Weston Ruter summed this all up just fine并建议使用PHP的日期和时间相关类并明确设置它们的时区。