【发布时间】:2013-06-06 09:18:08
【问题描述】:
在服务器上设置请求时间会发生什么?是否考虑了配置服务器的时区?
我问是因为我需要知道,如果我有一个将时区设置为站点范围变量的站点,并且我将某些内容与 $_SERVER['REQUEST_TIME'] 进行比较以了解它是否已过期,我不确定时区不匹配是否可能。
【问题讨论】:
标签: php web-applications timezone superglobals
在服务器上设置请求时间会发生什么?是否考虑了配置服务器的时区?
我问是因为我需要知道,如果我有一个将时区设置为站点范围变量的站点,并且我将某些内容与 $_SERVER['REQUEST_TIME'] 进行比较以了解它是否已过期,我不确定时区不匹配是否可能。
【问题讨论】:
标签: php web-applications timezone superglobals
$_SERVER 的'REQUEST_TIME' 是一个 Unix 时间戳。这应该是足够的信息,但如果不是:Unix 时间戳始终基于 UTC。
DateTime 中的 Unix 时间戳记法是在数字前加上 at 符号(“@”)。然后第二个 $timeZone 参数是 ingored 并默认为“UTC”,因为它是一个始终基于 UTC 的 Unix 时间戳:
$requestTime = new DateTime("@$_SERVER[REQUEST_TIME]");
给予:
class DateTime#1 (3) {
public $date => string(19) "2013-06-23 07:45:44"
public $timezone_type => int(1)
public $timezone => string(6) "+00:00"
}
甚至不可能(通过构造时的时间戳)将DateTime 对象强制到不同的时区 - 只能在稍后的changing the timezone。
【讨论】:
@ 符号是您只是在使 PHP E_Notice 静音,因为其中可能没有 REQUEST_TIME 元素。但是在尝试并阅读 the docs 之后,我可以说这是正确的。