Next Generation CMS :: Форум поддержки

Заинтересовала наша система? Тогда этот форум для Вас!

Вы не зашли.

#1 2017-03-19 17:26:24

irbees2008
Продвинутый чайник ;)
Откуда Шахтинск
Зарегистрирован: 2012-03-14
Сообщений: 2,850
Рейтинг :   120 
Сайт

форматирование даты

Как вывести день недели, месяц на русском .
Есть вариант через ads pro

function rus_date() {
    $translate = array(
    "am" => "дп",
    "pm" => "пп",
    "AM" => "ДП",
    "PM" => "ПП",
    "Monday" => "Понедельник",
    "Mon" => "Пн",
    "Tuesday" => "Вторник",
    "Tue" => "Вт",
    "Wednesday" => "Среда",
    "Wed" => "Ср",
    "Thursday" => "Четверг",
    "Thu" => "Чт",
    "Friday" => "Пятница",
    "Fri" => "Пт",
    "Saturday" => "Суббота",
    "Sat" => "Сб",
    "Sunday" => "Воскресенье",
    "Sun" => "Вс",
    "January" => "Января",
    "Jan" => "Янв",
    "February" => "Февраля",
    "Feb" => "Фев",
    "March" => "Марта",
    "Mar" => "Мар",
    "April" => "Апреля",
    "Apr" => "Апр",
    "May" => "Мая",
    "May" => "Мая",
    "June" => "Июня",
    "Jun" => "Июн",
    "July" => "Июля",
    "Jul" => "Июл",
    "August" => "Августа",
    "Aug" => "Авг",
    "September" => "Сентября",
    "Sep" => "Сен",
    "October" => "Октября",
    "Oct" => "Окт",
    "November" => "Ноября",
    "Nov" => "Ноя",
    "December" => "Декабря",
    "Dec" => "Дек",
    "st" => "ое",
    "nd" => "ое",
    "rd" => "е",
    "th" => "ое"
    );
    
    if (func_num_args() > 1) {
        $timestamp = func_get_arg(1);
        return strtr(date(func_get_arg(0), $timestamp), $translate);
    } else {
        return strtr(date(func_get_arg(0)), $translate);
    }
} 
 
echo "<b>Сегодня ". rus_date("l, j F Y")." года</b>"; // Сегодня Вторник, 21 Августа 2012 года

Или где в движке формируется

{{ now|date("l. d F Y г.  H:i") }}

Не в сети

#2 2017-03-19 18:47:26

infinity237
Модератор
Откуда Russia, Moscow
Зарегистрирован: 2008-11-09
Сообщений: 2,674
Рейтинг :   176 
Сайт

Re: форматирование даты

Фильтр date в TWIG использует DateTime::format, который не поддерживает локали. Как вариант писать свой фильтр, либо подключать например готовый localizeddate:
https://github.com/twigphp/Twig-extensions/blob/master/lib/Twig/Extensions/Extension/Intl.php

Не в сети

#3 2017-07-24 11:18:40

irbees2008
Продвинутый чайник ;)
Откуда Шахтинск
Зарегистрирован: 2012-03-14
Сообщений: 2,850
Рейтинг :   120 
Сайт

Re: форматирование даты

Всем привет, нужно сделать вывод даты новости на русском, без js . Варианты с php понятны,но нужен твиг, может уже добавить фильтр выше указанный на постоянку?
Или вот эти варианты могут подойти

{% set mnths = ['','января','февраля','марта','апреля','мая','июня','июля','августа','сентября','октября','ноября','декабря'] %}

{{ record.datepublish|date("j") }} 
{{ mnths[record.datepublish|date("n")] }} 
{{ record.datepublish|date("Y") }}
$filter = new Twig_SimpleFilter('date_russian_month', function ($date) {
    $months = [1 => 'января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря'];
    $date = DateTime::createFromFormat('Y-m-d H:i:s', $date);
    $key = $date->format('n');
    return $date->format('d ' . $months[$key] . ' Y');
});
$twig->addFilter($filter);

Не в сети

#4 2017-07-24 15:18:07

rusiq
гуру
Зарегистрирован: 2014-07-16
Сообщений: 634
Рейтинг :   37 

Re: форматирование даты

В core.php в конец добавить

$twig->addFilter('LangDate', new Twig_Filter_Function('LangDate'));

В шаблоне news.full.tpl

{{ "l, j Q Y \\года \\в H:i" | LangDate(news.dateStamp) }}

На выходе

Суббота, 22 июля 2017 года в 11:22

Изменено rusiq (2017-07-24 15:18:58)

Не в сети

#5 2017-08-02 19:52:25

irbees2008
Продвинутый чайник ;)
Откуда Шахтинск
Зарегистрирован: 2012-03-14
Сообщений: 2,850
Рейтинг :   120 
Сайт

Re: форматирование даты

А как вывести текущую дату ?

Не в сети

#6 2017-08-03 01:00:36

rusiq
гуру
Зарегистрирован: 2014-07-16
Сообщений: 634
Рейтинг :   37 

Re: форматирование даты

smile

{{ "l, j Q Y \\года, H:i по дефолту настроек системы \\N\\\G\\C\\M\\S" | LangDate(date().timestamp) }}

Изменено rusiq (2017-08-03 01:00:47)

Не в сети

#7 2017-08-03 01:08:51

rusiq
гуру
Зарегистрирован: 2014-07-16
Сообщений: 634
Рейтинг :   37 

Re: форматирование даты

Тогда уже надо делать не в виде фильтра, а в виде функции. В core.php вместо того, что написано ранее

$twig->addFunction('LangDate', new Twig_Function_Function('LangDate'));

Ну и там, где надо вывести текущую дату

{{ LangDate("l, j Q Y \\года, H:i", date().timestamp) }}

Либо в шаблонах, где доступна дата в формате timestamp. К примеру, news.full.tpl

{{ LangDate("l, j Q Y \\года, H:i", news.dateStamp) }}

Изменено rusiq (2017-08-03 01:13:18)

Не в сети

Подвал раздела

Работает на FluxBB