
В любом нормальном проекте не избежать форматирования даты, чтобы не тратить время на реализацию своих методов и функций я хочу рассказать как быстро отформатировать дату средствами 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«, подробнее модификаторы можно посмотреть тут