- PVSM.RU - https://www.pvsm.ru -
Всем доброго времени суток. В первую очередь хочется сказать спасибо всем кто принял участие в этом [1] опросе. Так или иначе стало понятно, что смысл в подобного рода статьям все таки есть. Итак, ниже речь пойдет о функции которую волею случая мне пришлось написать, так как готового решения — увы не нашлось. Собсвенно сам вопрос — а как вы выводите дату в зависимости от локации? Интересно? Прошу под кат.
Сама функция была написана как фильтр-функция к шаблонизатору twig. Собственно вот сам код
public function date2($date, $format = "EEEE d/MMMM/YYYY")
{
if(is_string($date)){
$date = new DateTime($date);
}
$formatter = new IntlDateFormatter(Locale::getDefault(), IntlDateFormatter::NONE, IntlDateFormatter::NONE);
$formatter->setPattern($format);
return array('locale' => Locale::getDefault(), "intl" => $formatter->format($date));;
}
В принципе ничего сложно в нем вы не найдете, но тем не менее свою роль код выполняет. На вход принимает дату в виде объекта, если же приходит строка — то она превращается в объект. На выходе — массив с ключами. Первый — текущая локация, второй дата, в таком формате, который вы указываете во 2 передаваемом аргументе самой функции.
Один ньюанс данной функции — она требует установленную на сервере библиотеку intl [2].
В следующей статье, мы научимся делать свои фильтры для шаблона twig. Естественно при непосредственном участии Symfony2 framework. Всем удачи и приятного кодинга. Любите Symfony2 и да прибудет с вами сила.
P.S. Есть еще вот такой замечательный ресурс — userguide.icu-project.org/formatparse/datetime [3] в нем собраны наверно все возможные форматы дат и времени, какие только встречаются.
Автор: m4a1fox
Источник [4]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/php-2/50088
Ссылки в тексте:
[1] этом: http://habrahabr.ru/post/202632/
[2] intl: http://mx1.php.net/intl
[3] userguide.icu-project.org/formatparse/datetime: http://userguide.icu-project.org/formatparse/datetime
[4] Источник: http://habrahabr.ru/post/205008/
Нажмите здесь для печати.