我一直在尝试根据提供的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时区吗?任何帮助将不胜感激!使用
<?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
https://repl.it/EBSO/0
,
timezone_name_from_abbr()有时返回FALSE而不是实际的时区:http://bugs.php.net/44780