timezone_name_from_abbr失败,偏移量为30分钟

时间:2016-10-20 03:12:45

标签: php timezone

我一直试图根据提供的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时区吗?任何帮助将不胜感激!

1 个答案:

答案 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

<强>样本

https://repl.it/EBSO/0

<强> ---

  

timezone_name_from_abbr()有时会返回FALSE而不是实际值   时区:http://bugs.php.net/44780