PHP - date('now') 的输出比当地时间提前 6 小时,但时区设置为正确的本地时区?

PHP - output of date('now') is a ahead of local time by 6 hours, but time zone is set to correct local zone zone?

我在美国中部时区的密苏里州圣路易斯。我们是格林威治标准时间 -6

php.ini中的PHP时区设置为date.timezone="America/Chicago"

(芝加哥几乎就在圣路易斯以北。

回显日期('now');生产:2015 年 12 月 19 日,2:45 上午。编辑 - 我的意思是 date("F j, Y, g:i a", strtotime("now"));,不是 date('now');

本地(按日历和时钟)是 2015 年 12 月 18 日 8:45 下午。

这是 phpinfo() 输出的日期信息

date/time support   enabled
"Olson" Timezone Database Version   2015.1
Timezone Database   internal
Default timezone    America/Chicago

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           America/Chicago America/Chicago

我认为如果设置了正确的时区,date('now') 将 return 本地时间和时间 - 但我显然错了。

关于 date() 函数或一般的 PHP 日期处理,我遗漏了什么?

西蒙

您可以选择几种不同的方式来处理此问题:

  • 您可以使用 date_default_timezone_set 覆盖 Wordpress 的时区设置。

  • 可以使用PHP DateTime class代替date函数,它在构造函数中接受时区

  • 您可以在 WP 管理/设置/常规部分更改 Wordpress 的时区设置: