Come stampare un formato data personalizzato in Twig?


14

Come posso stampare un formato data personalizzato in Twig? Prima di tutto sto provando a modificare il field.html.twigcampo chiamato field_publication_date, in quel file trovo questa variabile {{ item.content }}che stampa Jun, 12/06/2016 - 12:29.

Questo è quello che ho provato: {{ item.content.field_publication_date|format_date('M') }}

Risposte:


16

Prova a usare questo -

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

Ma penso che otterrai la tua soluzione

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

Dove item.content contiene la stringa di data all'interno del campo - nodo - field-publishing-date.html.twig .


2
format_datedovrebbe essere la funzione, facendo riferimento a un formato data da Drupal
Kevin


1
Grazie. La prima opzione ha funzionato per me {{item.content.field_publication_date | date ("M")}}
Ricardo Castañeda

2
Se si tratta di un campo data, perché le impostazioni del formattatore di campo non sono sufficienti? Inoltre, se si tratta di un timestamp, format_date è un filtro ramoscello Drupal è possibile passare formati di data personalizzati a: drupal.org/docs/8/theming/twig/…
Kevin

1
@kevin Ho fatto finta di usare la suite di visualizzazione e per token mostra le date in diversi div. Ma in qualche modo la data personalizzata non ha funzionato per me.
Ricardo Castañeda,

14

Innanzitutto, crea il formato data personalizzato my_custom_date_format nella sezione di configurazione dell'amministratore drupal.

Secondo, usa il format_datefiltro Twig, come qui:

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

Per prima cosa potrebbe essere necessario convertire la data in un timestamp unix. Apparirà così:

{{ node.my_date_field.value|date('U')|format_date('my_custom_date_format') }}

1
Il secondo esempio di codice non ha funzionato per me, poiché "value" sull'array di contenuti (content.field_date.value) era null. Ho il sospetto che si presenti o meno in base al formatter di visualizzazione utilizzato per quel campo. Ho dovuto usare node.field_date.value|date('U')invece.
George,

@George ha ragione, la .valuechiave è di solito disponibile solo per campi di entità come node, usero paragraph, ma non all'interno di array di rendering ( content). Ho modificato il secondo esempio per utilizzare la nodevariabile
Hudri

2

Il \Drupal\datetime\Plugin\Field\FieldType\DateTimeItemha un valore e una proprietà data. Il valueè UTC e dateviene calcolata. Usa la proprietà date per evitare di dover fare i conti con il fuso orario e puoi usare un formato creato o uno personalizzato:

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

Formato data in Drupal:

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


Ecco cosa ha funzionato per me: {{node.field_event_date.date | date ('U') | format_date ('custom', 'F j, Y')}}
arnoldbird,

Ciao @arnoldbird, puoi spiegarmi cosa date('U')fa?
Aman Devrath

1

So che questa domanda si riferisce specificamente alla formattazione del valore di un determinato campo data, ma avevo bisogno di formattare la data di creazione del nodo. Se ne hai bisogno, questo è ciò che funziona per me (dopo aver provato diverse opzioni):

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

È qui che ho ottenuto questa soluzione da: https://www.drupal.org/forum/support/theme-development/2016-02-17/how-to-get-formatted-node-creation-date-in-d8 # comment-10865464


0

Questo ha funzionato per me. Il valore della data con la funzione di formato della data () del ramoscello:

{{ content.field_arrival_date.value | date("Y/m/d") }}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.