Comment imprimer un format de date personnalisé dans Twig?

14

Comment imprimer un format de date personnalisé dans Twig? Tout d'abord, j'essaie d'éditer le field.html.twigchamp appelé field_publication_date, dans ce fichier je trouve cette variable {{ item.content }}qui s'imprime Jun, 12/06/2016 - 12:29.

Voici ce que j'ai essayé: {{ item.content.field_publication_date|format_date('M') }}

Ricardo Castañeda
la source

Réponses:

16

Essayez d'utiliser ceci -

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

Mais je pense que vous obtiendrez votre solution

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

item.contentcontient la chaîne de date dans le champ - node - field-publication-date.html.twig .

Ashish Deynap
la source
2
format_datedevrait être la fonction, référençant un format de date de Drupal
Kevin
1
J'ai été référencé ici
Ashish Deynap
1
Je vous remercie. La première option a fonctionné pour moi {{item.content.field_publication_date | date ("M")}}
Ricardo Castañeda
2
S'il s'agit d'un champ de date, pourquoi les paramètres de formatage de champ ne sont-ils pas suffisants? De plus, s'il s'agit d'un horodatage, format_date est un filtre de brindille Drupal, vous pouvez passer des formats de date personnalisés à: drupal.org/docs/8/theming/twig/…
Kevin
1
@kevin J'ai fait semblant d'utiliser la suite d'affichage et d'afficher par jeton les dates dans différentes divisions. Mais en quelque sorte, la date personnalisée n'a pas fonctionné pour moi.
Ricardo Castañeda
14

Tout d'abord, créez le format de date personnalisé my_custom_date_formatdans la section de configuration de l'administrateur drupal.

Deuxièmement, utilisez le format_datefiltre Twig, comme ici:

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

Il peut être nécessaire de convertir d'abord la date en un horodatage Unix. Cela ressemblera à ceci:

{{ node.my_date_field.value|date('U')|format_date('my_custom_date_format') }}
Philipp Zedler
la source
1
Le deuxième exemple de code n'a pas fonctionné pour moi, car "valeur" sur le tableau de contenu (content.field_date.value) était nul. Je soupçonne qu'il apparaît ou non en fonction du formateur d'affichage utilisé pour ce champ. J'ai dû utiliser à la node.field_date.value|date('U')place.
George
@George a raison, la .valueclé n'est généralement disponible que pour les champs d'entités comme node, userou paragraph, mais pas dans les tableaux de rendu ( content). J'ai édité le 2ème exemple pour utiliser la nodevariable
Hudri
2

Le \Drupal\datetime\Plugin\Field\FieldType\DateTimeItema une valeur et une propriété date. Le valueest UTC et le dateest calculé. Utilisez la propriété date pour éviter d'avoir à gérer le fuseau horaire et vous pouvez utiliser un format créé ou personnalisé:

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

Format de date dans Drupal:

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

joelpittet
la source
Voici ce qui a fonctionné pour moi: {{node.field_event_date.date | date ('U') | format_date ('custom', 'F j, Y')}}
arnoldbird
Salut @arnoldbird, pouvez-vous m'expliquer ce que date('U')fait?
Aman Devrath
1

Je sais que cette question se réfère spécifiquement au formatage de la valeur d'un champ de date donné, mais j'avais besoin de formater la date de création du nœud. Au cas où vous en auriez besoin, voici ce qui fonctionne pour moi (après avoir essayé plusieurs options différentes):

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

C'est là que j'ai obtenu cette solution: https://www.drupal.org/forum/support/theme-development/2016-02-17/how-to-get-formatted-node-creation-date-in-d8 # comment-10865464

Marcos Buarque
la source
0

Cela a fonctionné pour moi. La valeur de date avec la fonction de format date () de twig:

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