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
Description
string timezone_name_from_abbr
( string $abbr
[, int $gmtOffset
[, int $isdst
]] )
Parameters
- 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 .
Return Values
Returns time zone name on success or FALSE on failure.
Examples
Example #1 A timezone_name_from_abbr() example
<?php
echo timezone_name_from_abbr("CET") . "\n";
echo timezone_name_from_abbr("", 3600, 0) . "\n";
?>
The above example will output something similar to:
Europe/Berlin Europe/Paris
timezone_name_from_abbr
chris at mretc dot net
11-Nov-2008 02:25
11-Nov-2008 02:25
