timezone_name_from_abbr() sometimes returns FALSE instead of an actual timezone: http://bugs.php.net/44780
It's possible to workaround it for some cases by getting the timezone name from timezone_abbreviations_list(). For example, if you have the GMT offset and want a timezone name:
<?php
/* Takes a GMT offset (in hours) and returns a timezone name */
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;
}
?>
timezone_name_from_abbr
(PHP 5 >= 5.1.3)
timezone_name_from_abbr — Returns the timezone name from abbrevation
说明
string timezone_name_from_abbr
( string $abbr
[, int $gmtOffset
[, int $isdst
]] )
参数
- abbr
-
Time zone abbreviation.
- gmtOffset
-
Offset from GMT in seconds. Defaults to -1 which means that first found time zone corresponding to abbr is returned. Otherwise exact offset is searched and only if not found then the first time zone with any offset is returned.
- isdst
-
Daylight saving time indicator. If abbr doesn't exist then the time zone is searched solely by offset and isdst .
返回值
Returns time zone name on success or FALSE on failure.
范例
Example#1 A timezone_name_from_abbr() example
<?php
echo timezone_name_from_abbr("CET") . "\n";
echo timezone_name_from_abbr("", 3600, 0) . "\n";
?>
上例的输出类似于:
Europe/Berlin Europe/Paris
timezone_name_from_abbr
chris at mretc dot net
11-Nov-2008 09:25
11-Nov-2008 09:25
