#php #zend-framework #timezone #timestamp
#php #zend-framework #Часовой пояс #временная метка
Вопрос:
У меня возникли проблемы с преобразованием метки времени, которая является датой UTC, в другой часовой пояс с помощью Zend Framework. Мой часовой пояс по умолчанию — Европа / Париж
$timestamp = 1319530421;
$date = new Zend_Date();
$date->setTimezone('UTC');
$date->set($timestamp, Zend_Date::TIMESTAMP);
echo $date->get(Zend_Date::W3C).' - '.$date->getTimezone().'<br />';
$date->setTimezone('Europe/Paris');
echo $date->get(Zend_Date::W3C).' - '.$date->getTimezone().'<br />';
что соответствует
2011-10-25T08:13:41 00:00 - UTC
2011-10-25T10:13:41 02:00 - Europe/Paris
но это неправильно, потому что эта временная метка
2011-10-25T10:13:41 00:00 - UTC
Что я делаю не так? Спасибо
Комментарии:
1. Не могли бы вы прояснить вопрос, пожалуйста. Я не понимаю, что вы считаете неправильным в выводе. Кроме того, есть ли какая-либо особая причина для использования медленного и громоздкого API Zend_Date. Какие функции вы используете, которые не предлагает собственный API DateTime?
2. Я работаю с временными метками. Те, которые хранятся в базе данных, находятся в UTC. Я просто хочу преобразовать их в часовой пояс пользователя. С другой стороны, мне не нужно делать это с помощью Zend_Date. Я просто использую zend framework. Решение PHP действительно для меня.
3. но что не так с датами? 1319530421 действительно 2011-10-25T08:13:41 GMT / UTC. См . codepad.viper-7.com/HxJgeJ или попробуйте с epochconverter.com
4. Затем, я думаю, у меня ошибка при разборе дат. Мой плохой. Спасибо за вашу помощь.
5. нет проблем 🙂 и сделайте себе одолжение и попробуйте собственный API DateTime.
Ответ №1:
Вы ошибаетесь в отношении метки времени в вашем примере. Это дата:
date_default_timezone_set('UTC');
$timestamp = 1319530421;
echo date('c e', $timestamp); # 2011-10-25T08:13:41 00:00 UTC
Так что в вашем примере все правильно, просто ваши ожидания не таковы.