В любом нормальном проекте не избежать форматирования даты, чтобы не тратить время на реализацию своих методов и функций я хочу рассказать как быстро отформатировать дату средствами MySQL и Zend_Date.
Форматирование с помощью Zend_Date.
Для быстрого форматирования даты при выводе ее пользователю я предлагаю создать помощник вида.
Для этого создаем простой viewHelper (application/view/helpers), я назвал его DateHelper:
<?php /** * * @author Roman * @version */ require_once 'Zend/View/Interface.php'; /** * DateHelper helper * * @uses viewHelper Zend_View_Helper */ class Zend_View_Helper_DateHelper { /** * @var Zend_View_Interface */ public $view; /** * */ public function dateHelper($date_value, $format) { $locale = Zend_Registry::get('Zend_Locale'); $date = new Zend_Date($date_value, false, $locale); return $date->toString($format); } /** * Sets the view field * @param $view Zend_View_Interface */ public function setView (Zend_View_Interface $view) { $this->view = $view; } }
Теперь мы можем использовать его в view скрипте следующим образом:
$unformated_data = "2011-01-30 12:21:11"; $this->dateHelper($unformated_data, "dd MMMM"); ?>
Дата будет отформатирована в «30 January«. Для того чтобы дата выводилась с учетом локали (языка) нужно в файле Bootstrap.php добавить метод:
protected function _initLocale() { $locale = new Zend_Locale('ru_RU'); Zend_Registry::set('Zend_Locale', $locale); }
В данном случае наш помощник вида выведет «30 января«. Модификаторы даты можно посмотреть тут.
Форматирование средствами СУБД MySQL.
Если вы получаете дату из базы, то не стоит забывать о встроенном форматировании даты в MySQL и других СУБД.
DATE_FORMAT('2011-01-30 12:21:11', '%d %M') AS FIELD_1
Функция DATE_FORMAT вернет нам «30 January«, подробнее модификаторы можно посмотреть тут