如何获取物理服务器时区偏移量(不是来自php.ini或IP)?

时间:2016-08-17 16:40:19

标签: php linux datetime timezone

如何获得物理机的时区偏移,而不是php.ini报告的时区(当然不是通过geoIP)?

从php.ini或脚本中我们可以轻松设置默认时区。例如,在我的盒子上它是

Timezone]

在PHP中,

if (date_default_timezone_get()) {
    echo 'date_default_timezone_set: ' . date_default_timezone_get() . '<br />';
}

if (ini_get('date.timezone')) {
    echo 'date.timezone: ' . ini_get('date.timezone');
}
  

date_default_timezone_set:亚洲/东京
  date.timezone:亚洲/东京

但是,物理服务器位于山区时间,访问日志中包含时区偏移字符串-0700。

已解决:使用exec()我们可以获得系统时间和当前时区偏移量。这正是我们所需要的。感谢@codisfy的灵感。

echo shell_exec('date +\'%:z\'');
  

-07:00

修改:此问题(PHP 5.4 Can't Determine Time Zones on its own)是关于获取时区名称,但重要的是时区偏移 。感谢您指出可能重复的社区,唉,这是一个不同的要求。

1 个答案:

答案 0 :(得分:1)

从评论到回答: 您可以使用shell_exec()获取系统时间。 使用它可以运行命令,因为它将在shell上运行并返回输出。

所以做这样的事情会有所帮助:

shell_exec('date +\'%Z\'');