如何获得物理机的时区偏移,而不是php.ini报告的时区(当然不是通过geoIP)?
从php.ini或脚本中我们可以轻松设置默认时区。例如,在我的盒子上它是
]
在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)是关于获取时区名称,但重要的是时区偏移 。感谢您指出可能重复的社区,唉,这是一个不同的要求。
答案 0 :(得分:1)
从评论到回答: 您可以使用shell_exec()获取系统时间。 使用它可以运行命令,因为它将在shell上运行并返回输出。
所以做这样的事情会有所帮助:
shell_exec('date +\'%Z\'');