Как распечатать пользовательский формат даты в Twig?

14

Как я могу распечатать пользовательский формат даты в Twig? Прежде всего, я пытаюсь отредактировать field.html.twigполе с именем field_publication_date, в этом файле я нахожу эту переменную, {{ item.content }}которая печатает Jun, 12/06/2016 - 12:29.

Вот что я попробовал: {{ item.content.field_publication_date|format_date('M') }}

Рикардо Кастаньеда
источник

Ответы:

16

Попробуйте использовать это -

{{ item.content.field_publication_date|date("M") }}

Но я думаю, что вы получите свое решение в

{{ item.content|date("M") }}

Где item.contentсодержит строку даты внутри поля - node - field-publishing-date.html.twig .

Ашиш Дейнап
источник
2
format_dateдолжна быть функция,
Кевин
1
Получил ссылку здесь
Ашиш Дейнап
1
Спасибо. Первый вариант сработал для меня {{item.content.field_publication_date | date ("M")}}
Рикардо Кастаньеда
2
Если это поле даты, почему недостаточно настроек форматера поля? Кроме того, если это временная метка, то format_date - это фильтр ветки Drupal, в который вы можете передавать пользовательские форматы дат: drupal.org/docs/8/theming/twig/…
Кевин
1
@kevin Я притворился, что использую набор отображения и токеном показываю даты в разных div. Но каким-то образом заказная дата не сработала для меня.
Рикардо Кастаньеда
14

Сначала создайте пользовательский формат даты my_custom_date_formatв разделе конфигурации администратора drupal.

Во-вторых, используйте format_dateфильтр Twig, как здесь:

{{ node.created.value|format_date('my_custom_date_format') }}

Сначала может потребоваться преобразовать дату в метку времени Unix. Это будет выглядеть так:

{{ node.my_date_field.value|date('U')|format_date('my_custom_date_format') }}
Филипп Зедлер
источник
1
Второй пример кода у меня не сработал, так как «значение» в массиве контента (content.field_date.value) было нулевым. Я подозреваю, что он отображается или нет в зависимости от форматера дисплея, используемого для этого поля. Я должен был использовать node.field_date.value|date('U')вместо этого.
Джордж
@George прав, то .valueключ, как правило , доступны только для полей из структур , как node, userили paragraph, но не в визуализации массивов ( content). Я отредактировал 2-й пример, чтобы использовать nodeпеременную
Худри
2

\Drupal\datetime\Plugin\Field\FieldType\DateTimeItemИмеет значение и свойство даты. valueЯвляется UTC и dateвычисляется. Используйте свойство date, чтобы избежать необходимости иметь дело с часовым поясом, и вы можете использовать созданный формат или пользовательский:

{{ node.field_publication_date.date|format_date('custom', 'F j, Y') }}

Формат даты в Drupal:

{{ node.field_publication_date.date|format_date('my_custom_date_format') }}

joelpittet
источник
Вот что сработало для меня: {{node.field_event_date.date | date ('U') | format_date ('custom', 'F j, Y')}}
arnoldbird
Привет @arnoldbird, можешь мне объяснить, что date('U')делает?
Аман Деврат
1

Я знаю, что этот вопрос относится конкретно к форматированию значения данного поля даты, но мне нужно было отформатировать дату, когда был создан узел. В случае, если вам это нужно, это то, что работает для меня (после нескольких вариантов):

{{ node.getCreatedTime|format_date('medium') }}

Вот где я получил это решение: https://www.drupal.org/forum/support/theme-development/2016-02-17/how-to-get-formatted-node-creation-date-in-d8 # комментарий-10865464

Маркос Буарк
источник
0

Это сработало для меня. Значение даты с использованием собственной функции формата date ():

{{ content.field_arrival_date.value | date("Y/m/d") }}
Робб Дэвис
источник