-1

如何使用 PHP 在 Windows 服务器上获取服务器时区?

对于 Linux:

$systemTimeZone = system('date +%Z');

*尼克斯系统:

$systemTimeZone = popen("date +%Z");

视窗:

$systemTimeZone = ???

greez & thx, 天空...

编辑:我知道 php 函数,如:

date_default_timezone_get()
date('T')
\DateTime::timezone

但是 PHP 中的所有这些内置函数都引用了 php.ini 中的设置。我想知道操作系统中真正使用的时区。

我尝试使用 Windows 命令行工具

systeminfo

但这会减慢调用和解析的速度。我有 testet 的另一个命令行工具是:

tzutil /g

这不是我想要的时区格式,就我而言,我得到了这个:

$:> tzutil /g
W. Europe Standard Time

对我有什么其他想法吗?

4

3 回答 3

5

内置函数呢?

http://php.net/manual/en/function.date-default-timezone-get.php

于 2013-01-06T16:11:38.540 回答
1

我刚刚遇到了同样的错误,并且没有找到比使用自制映射更好的解决方案。对于 Windows,我使用了这个:

// this array can be filled up with whatever you need
$timezones = array(
      'GMT' => 'Europe/London'
    , '0' => 'Europe/London'
    , '1' => 'Europe/London'
    , 'GMT Standard Time' => 'Europe/London'
    , '2' => 'Europe/Berlin'
    , 'W. Europe Standard Time' => 'Europe/Berlin'
);

// getting the timezone    
$timezone = exec('tzutil /g');

// and setting it accordingly
if( array_key_exists($timezone, $timezones)) {      
    echo("> timezone identified as " . $timezones[$timezone] . "\n");
    date_default_timezone_set($timezones[$timezone]);
} else {
    die("Unknown Timezone: " . $timezone);
}
于 2015-01-05T17:10:11.933 回答
0

这将告诉您服务器时区缩写:

$systemTimeZone = date("T");
echo $systemTimeZone;

例如 EST、MDT ...

于 2013-01-06T16:11:52.750 回答