PHP 5.4无法自行确定时区

And*_*rew 12 php timezone datetime

我只想对此进行一些澄清.PHP 5.4消除了TZ环境变量和过去的"猜测" date_default_timezone_get.所以现在我觉得根本没办法得到服务器的时区.

所以我的问题是:是否可以在PHP 5.4中获取服务器时区?我知道我可以在php.ini中手动设置它,但是当一台计算机完全能够知道它的时间时,这似乎有点傻.我希望答案是"不",所以也许有人可以阐明为什么编程语言无法确定其时区(如果是这种情况).

Sta*_*asM 4

没有可靠的方法来猜测每个系统上的时区。不同的系统使用不同的约定,有时甚至使用不同的时区定义(例如 Unix 和 Windows),有时具有冲突的时区说明符(相同的 3 字母区域缩写在不同的地方可能表示不同的含义)。因此,如果您希望拥有可在系统之间移植的代码,唯一可靠的方法就是询问用户。例如,请参阅此线程: http://marc.info/?t=132356551500002 &r=1&w=2,了解它的一些问题(查找来自 Derick Rethans 的电子邮件 - 他是 PHP 日期时间扩展维护者)。

如果您有办法找出您信任的时区(例如 TZ 变量),那么您总是可以这样做date_default_timezone_set($_SERVER['TZ']);。然而一般来说这不是一个可靠的方法,因此必须由您决定是否信任它,PHP 无法为您做到这一点。