Неполный список часовых поясов, сгенерированных PHP - PullRequest
3 голосов
/ 25 апреля 2011

Я попытался сгенерировать полный набор часовых поясов, как указано в http://php.net/manual/en/timezones.php (кроме UTC), используя следующий код:

$zones = timezone_identifiers_list();

print_r($zones);

Но этот список, кажется, пропускает ~ 50 регионов, например: Тихий океан / Самоа (по сравнению с http://php.net/manual/en/timezones.php)

Что мы делаем не так?

phpinfo () показывает:

PHP Version 5.3.4
Apache Version  Apache/2.2.3 (CentOS) 

$ uname -r
2.6.18-028stab070.14

Редактировать # 2

date
date/time support   enabled
"Olson" Timezone Database Version   0.system
Timezone Database   internal
Default timezone    UTC 

Ответы [ 4 ]

6 голосов
/ 25 апреля 2011

Ваша база данных часовых поясов может быть устаревшей.

Попробуйте перейти по ссылке внизу страницы Список поддерживаемых часовых поясов :

Последняя версия часового пояса базу данных можно установить через PECL » timezonedb .



После комментариев отредактируйте: чтобы обновить базу данных часовых поясов, так как вы работаете в системе Linux, вы можете использовать команду pecl (я только что попробовал это на моей машине с Ubuntu) :

pecl upgrade timezonedb

Это загрузит новую версию и скомпилирует ее.

Затем, если вы включите новое расширение timezonedb, ваш PHP должен использовать базу данных обновлений:

php -dextension=timezonedb.so -i | grep Timezone
"Olson" Timezone Database Version => 2011.5
Timezone Database => external
Alternative Timezone Database => enabled
Timezone Database Version => 2011.5

Если я попытаюсь без включения этого нового расширения, я получу то же, что и раньше:

php -i | grep Timezone
"Olson" Timezone Database Version => 0.system
Timezone Database => internal
1 голос
/ 25 апреля 2011

Протестировал это на моем сервере. Совершенно никаких проблем. Может быть, это проблема, связанная с сервером?

вывод: timezones.php

исходный код:

<?php

foreach(DateTimeZone::listIdentifiers() as $zone) {

    echo $zone.'<br/>';

}   

?>

Лучший, Christian

0 голосов
/ 18 февраля 2012

Попробуйте вызвать timezone_identifiers_list (DateTimeZone :: ALL_WITH_BC). Это сработало для меня. (Нашел это решение из этого поста: https://stackoverflow.com/a/5873059/323330)

0 голосов
/ 25 апреля 2011

Как указывает Паскаль МАРТИН , база данных часовых поясов PHP представляет собой пакет PECL.Поскольку вы используете хост Linux, у вас не должно возникнуть никаких проблем:

pecl install timezonedb

... или:

pecl upgrade timezonedb

Обновление:

Я нашел ссылкус конкретными инструкциями CentOS:

Вы также можете выполнить поиск:

C:\>pecl search timezonedb
Retrieving data...0%
MATCHED PACKAGES, CHANNEL PECL.PHP.NET:
=======================================
PACKAGE    STABLE/(LATEST) LOCAL
timezonedb 2011.5 (stable)       Timezone Database to be used with PHP's date and time functions
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...