我在Hostgator(巴西)有一个wordpress网站。服务器显示当前的正确时间(夏令时)。在本例中,正确的时间如下所示,即13h(America / São Paulo). 通过登录putty.exe
:
[email protected] [~] # date
2018年11月11日星期日13:55:01-2月<<;-
correct time / 美国/圣保罗夏令时
然而,在PHP脚本中,我得到time in 2 hours:
echo date ("e / d-m-Y G: i: s");
UTC/11-11-2018 15:55:01
同时,在Wordpress(管理->设置->常规)中,“时区”字段设置为UTC-3
其中显示:
世界时(UTC)为11/11/2018 15:55:01
. 当地时间2018年11月11日12:55:01。
简而言之,服务器显示13h
(圣保罗DST的当前时间正确),但PHP显示15h
Wordpress显示12h
.
如何规范这一点,即这3起案件同时发生?
最合适的回答,由SO网友:Tom J Nowell 整理而成
简而言之,服务器显示为13h(在圣保罗夏令时的当前时间是正确的),但PHP显示为15h,WordPress显示为12h。
这是有意的,需要进一步澄清,但要扩展,您必须:
服务器本地时间UTC时间戳需要单独设置,例如,如果我在莫斯科的服务器上托管一个日本网站:
服务器本地时间将是莫斯科时间,UTC时间戳是时间戳,它们始终是UTC时间,本地WP时间将是UTC时间戳+偏移量,也就是东京时间的偏移量您的本地WP安装似乎配置了错误的时区
如何规范这一点,即这3起案件同时发生?
你没有,你的思维模式是不正确的。
WordPress将UTC中的所有时间存储为时间戳。时间戳没有本地化,对于我来说是12点UTC,对于你来说是12点UTC,无论你在哪个时区。WordPress然后根据所需的显示时区添加或减去偏移量。
您需要更改的是偏移量,这就是时区设置所做的,这正是设置上的描述所说的:
很明显,无论您的站点在该下拉列表中具有何种价值,都没有正确选择,可能是没有考虑到夏令时(例如,如果您位于UTC+4时区,并且夏令时向前跳了一个小时,则您不再是UTC+4,您位于UTC+5)
至于服务器时间,如果您使用PHP,则必须先将其转换为UTC,或者在UTC中请求。还可以将服务器时间格式化为时间戳,确保包含时区/偏移量,但这只适用于较新的PHP datetime API
You may also find this useful in understanding the difference between a time and a timestamp with regards to timezones