Отображение конкретных часовых поясов в представлениях с Zend_Date - PullRequest
0 голосов
/ 18 августа 2010

Я храню все свои даты в формате ISO, поэтому все они выглядят так:

2010-08-17T12:47:59+00:00

Теперь, когда мое приложение запускается, я регистрирую часовой пояс, в котором находится текущий пользователь. Вв моем случае это будет «Европа / Берлин»:

date_default_timezone_set("Europe/Berlin");

Однако, когда Zend_Date анализирует даты ISO, он переопределяет часовой пояс по умолчанию, установленный ранее, и теперь имеет часовой пояс UTC.

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

Существуют ли более эффективные решения, чем написание специального помощника для просмотра только для этого?(Если это было правильное решение, не должно ли уже быть «DateViewHelper»?)

1 Ответ

0 голосов
/ 18 августа 2010

Не уверен, как это работает с Zend_Date, но учитывая тот факт, что вы используете PHP> = 5.2, вы можете использовать встроенный класс DateTime (который предлагает меньше функциональных возможностей, но чрезвычайно быстрый):

$date = new DateTime('2010-08-17T12:47:59+00:00');
$date->setTimezone(new DateTimeZone(date_default_timezone_get()));
echo $date->format(DateTime::W3C);

РЕДАКТИРОВАТЬ

Только что проверил Zend_Date, и на самом деле все работает здесь ...

$date = new Zend_Date('2010-08-17T12:47:59+00:00', Zend_Date::ISO_8601);
$date->setTimezone(date_default_timezone_get());
echo $date->getIso();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...