Как распечатать пользовательский формат даты в 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') }}


Вот что сработало для меня: {{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") }}
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.