Wie drucke ich ein benutzerdefiniertes Datumsformat in Twig?

14

Wie kann ich ein benutzerdefiniertes Datumsformat in Twig drucken? Zunächst versuche ich, das field.html.twigaufgerufene Feld zu bearbeiten . field_publication_dateIn dieser Datei finde ich diese Variable, {{ item.content }}die gedruckt wird Jun, 12/06/2016 - 12:29.

Folgendes habe ich versucht: {{ item.content.field_publication_date|format_date('M') }}

Ricardo Castañeda
quelle

Antworten:

16

Versuchen Sie dies zu verwenden -

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

Aber ich denke, Sie werden Ihre Lösung in bekommen

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

Wo item.contententhält die Datumszeichenfolge in Feld - Knoten - Feld-Veröffentlichungsdatum.html.twig .

Ashish Deynap
quelle
2
format_datesollte die Funktion sein, die auf ein Datumsformat von Drupal verweist
Kevin
1
Wurde von hier- twig.sensiolabs.org/doc/2.x/filters/date.html
Ashish Deynap
1
Vielen Dank. Die erste Option funktionierte für mich {{item.content.field_publication_date | date ("M")}}
Ricardo Castañeda
2
Wenn es sich um ein Datumsfeld handelt, warum reichen die Einstellungen für den Feldformatierer nicht aus? Auch wenn es sich um einen Zeitstempel handelt, ist format_date ein Drupal-Zweigfilter, an den Sie benutzerdefinierte Datumsformate übergeben können: drupal.org/docs/8/theming/twig/…
Kevin
1
@kevin Ich gab vor, Display Suite zu verwenden und per Token die Daten in verschiedenen Divs anzuzeigen. Aber irgendwie hat das benutzerdefinierte Datum bei mir nicht funktioniert.
Ricardo Castañeda
13

Erstellen Sie zunächst das benutzerdefinierte Datumsformat my_custom_date_formatim Konfigurationsabschnitt des Drupal-Administrators.

Zweitens verwenden Sie den format_dateZweigfilter wie hier:

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

Möglicherweise muss das Datum zuerst in einen Unix-Zeitstempel konvertiert werden. Das wird so aussehen:

{{ node.my_date_field.value|date('U')|format_date('my_custom_date_format') }}
Philipp Zedler
quelle
1
Das zweite Codebeispiel hat bei mir nicht funktioniert, da "value" im Inhaltsarray (content.field_date.value) null war. Ich vermute, dass es basierend auf dem für dieses Feld verwendeten Anzeigeformatierer angezeigt wird oder nicht. Ich musste node.field_date.value|date('U')stattdessen verwenden.
George
@George ist richtig, der .valueSchlüssel in der Regel nur für Felder von Entitäten verfügbar ist wie node, useroder paragraph, aber nicht innerhalb von Arrays machen ( content). Ich habe das 2. Beispiel bearbeitet, um die nodeVariable zu verwenden
Hudri
2

Das \Drupal\datetime\Plugin\Field\FieldType\DateTimeItemhat eine Wert- und eine Datumseigenschaft. Das valueist UTC und das datewird berechnet. Verwenden Sie die Eigenschaft date, um zu vermeiden, dass Sie sich mit der Zeitzone befassen müssen, und verwenden Sie ein erstelltes oder ein benutzerdefiniertes Format:

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

Datumsformat in Drupal:

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

joelpittet
quelle
Folgendes hat bei mir funktioniert: {{node.field_event_date.date | date ('U') | format_date ('custom', 'F j, Y')}}
arnoldbird
Hallo @arnoldbird, kannst du mir erklären was das date('U')macht?
Aman Devrath
1

Ich weiß, dass sich diese Frage speziell auf die Formatierung des Werts eines bestimmten Datumsfelds bezieht, aber ich musste das Datum formatieren, an dem der Knoten erstellt wurde. Falls Sie das brauchen, funktioniert dies für mich (nachdem Sie verschiedene Optionen ausprobiert haben):

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

Hier habe ich diese Lösung erhalten von: https://www.drupal.org/forum/support/theme-development/2016-02-17/how-to-get-formatted-node-creation-date-in-d8 # comment-10865464

Marcos Buarque
quelle
0

Das hat bei mir funktioniert. Der Datumswert mit der eigenen Date () -Formatfunktion von twig:

{{ content.field_arrival_date.value | date("Y/m/d") }}
Robb Davis
quelle