DateTimeZone::listAbbreviations
timezone_abbreviations_list
(PHP 5 >= 5.2.0)
DateTimeZone::listAbbreviations -- timezone_abbreviations_list — Returns associative array containing dst, offset and the timezone name
Description
Object oriented style
public static array DateTimeZone::listAbbreviations
( void
)
Procedural style
Return Values
Returns array on success or FALSE
on failure.
Examples
Example #1 A timezone_abbreviations_list() example
<?php
$timezone_abbreviations = DateTimeZone::listAbbreviations();
print_r($timezone_abbreviations["acst"]);
?>
The above example will output something similar to:
Array ( [0] => Array ( [dst] => 1 [offset] => -14400 [timezone_id] => America/Porto_Acre ) [1] => Array ( [dst] => 1 [offset] => -14400 [timezone_id] => America/Eirunepe ) [2] => Array ( [dst] => 1 [offset] => -14400 [timezone_id] => America/Rio_Branco ) [3] => Array ( [dst] => 1 [offset] => -14400 [timezone_id] => Brazil/Acre ) )
- PHP Руководство
- Функции по категориям
- Индекс функций
- Справочник функций
- Расширения для работы с датой и временем
- Дата и Время
- Функция DateTimeZone::__construct() - Создает новый объект DateTimeZone
- Функция DateTimeZone::getLocation() - Возвращает информацию о местоположении для временной зоны
- Функция DateTimeZone::getName() - Возвращает имя временной зоны
- Функция DateTimeZone::getOffset() - Возвращает смещение временной зоны от GMT
- Функция DateTimeZone::getTransitions() - Возвращает все переходы для временной зоны
- Функция DateTimeZone::listAbbreviations() - Возвращает ассоциативный массив содержащий флаг перехода на летнее время, смещение и имя временной зоны
- Функция DateTimeZone::listIdentifiers() - Возвращает численно индексированный массив со всеми идентификаторами временных зон
Коментарии
Note that the dst field is of boolean type, so if you are doing an identity comparison, you need to test for true or false, not 0 or 1. For example:
<?php
$timezone_abbreviations = DateTimeZone::listAbbreviations();
foreach ($timezone_abbreviations["est"] as $tz) {
echo $tz['timezone_id'];
// if ($tz['dst'] === 1) will always evaluate to false
if ($tz['dst'] === true) {
echo " (DST observed)<br />\n";
}
// Could use else here, but for illustration...
if ($tz['dst'] === false) {
echo " (DST not observed)<br />\n";
}
}
?>
This method returns an associative array containing some 'major' timezones (like CEST), which on their own contain more specific 'geographic' timezones (like Europe/Amsterdam).
If you're using these timezones and their offset/DST information, it's extremely important to realize the following:
*It seems like ALL DIFFERENT OFFSET/DST CONFIGURATIONS (including historical configurations) of each timezone are included!*
For example, Europe/Amsterdam can be found six times in the output of this function. Two occurrences (offset 1172/4772) are for the Amsterdam time used until 1937; two (1200/4800) are for the time that was used between 1937 and 1940; and two (3600/4800) are for the time used since 1940.
*Therefore, YOU CANNOT RELY ON THE OFFSET/DST INFORMATION RETURNED BY THIS FUNCTION as being currently correct/in use!*
If you want to know the current offset/DST of a certain timezone, you'll have to do something like this:
<?php
$now = new DateTime(null, new DateTimeZone('Europe/Amsterdam'));
echo $now->getOffset();
?>
P.S. I'm sorry for my use of caps lock in this post, but as this behavior is not described in the documentation, I considered it to be important enough to shout. Normally I don't do such things :)