我一直试图根据提供的UTC偏移量来获取时区名称,但我似乎无法使其工作30分钟偏移(即UTC+09:30)
<?php
function timeZoneTest($input) {
if ($returnValue = timezone_name_from_abbr('', 60 * 60 * $input, 0)) {
return $returnValue;
} else {
return 'Time Zone Not Found';
}
}
echo timeZoneTest(9) . '<br>';
echo timeZoneTest(9.5) . '<br>';
返回:
Asia/Tokyo
Time Zone Not Found
不应该9.5返回Australia/Adelaide
或至少有效的php时区吗?任何帮助将不胜感激!
答案 0 :(得分:1)
使用此功能:
<?php
function tz_offset_to_name($offset)
{
$offset *= 3600; // convert hour offset to seconds
$abbrarray = timezone_abbreviations_list();
foreach ($abbrarray as $abbr)
{
foreach ($abbr as $city)
{
if ($city['offset'] == $offset)
{
return $city['timezone_id'];
}
}
}
return FALSE;
}
echo tz_offset_to_name(9) . '<br>';
echo tz_offset_to_name(9.5) . '<br>';
?>
结果将是:
Asia/Tokyo
Australia/Adelaid
<强>样本强>
<强> --- 强>
timezone_name_from_abbr()有时会返回FALSE而不是实际值 时区:http://bugs.php.net/44780