Работа с датами и часовыми поясами, с Zend_Date - PullRequest
6 голосов
/ 16 июня 2009

У меня есть приложение, которое использует Zend_Date для отображения дат. Экземпляры Zend_Date создаются с использованием данных даты и времени из MySQL, ввода пользователя и текущей даты.

Я бы хотел, чтобы мои пользователи могли указывать свой часовой пояс и чтобы все даты отображались по местному времени.

На данный момент мой код работает так:

$date = '2009-01-01 10:30:00';

$date = new Zend_Date($date, Zend_Date::ISO_8601);

echo $date->get(Zend_Date::TIME_MEDIUM); //10:30:00

$date->setTimezone('Australia/ACT');

echo $date->get(Zend_Date::TIME_MEDIUM); //21:30:00

Это работает, но требует вызова setTimezone для каждой даты. Есть ли более простой способ управления часовыми поясами?

Я также рассматривал использование SET time_zone с MySQL для возврата скорректированных данных из MySQL. Тогда мне нужно будет только настроить даты, созданные в PHP-скриптах, для часовых поясов.

Я бы хотел услышать лучший способ справиться с этим, если у кого-то есть опыт.

Спасибо

Ответы [ 2 ]

7 голосов
/ 16 июня 2009

Я думаю, что установка часового пояса PHP должна установить значение по умолчанию для всех последующих экземпляров Zend_Date. Например:

date_default_timezone_set('Europe/Vienna');

Из раздела Zend_Date Справочного руководства Zend Framework :

В PHP мы можем настроить все функции, связанные с датой и временем, для работы с конкретным пользователем, установив часовой пояс по умолчанию в соответствии с ожиданиями пользователя. При создании экземпляров Zend_Date их часовой пояс автоматически становится текущим часовым поясом по умолчанию!

1 голос
/ 15 января 2010

Я думаю, что вы могли бы использовать Zend_Locale, прочитать о нем несколько документов, почти наверняка вы сможете заставить его работать С другой стороны, если вы используете Zend_Cache и Zend_Locale / Zend_Date, это значительно повысит скорость. В документации по Zend Framework есть примеры использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...