¿Cómo imprimir un formato de fecha personalizado en Twig?


14

¿Cómo puedo imprimir un formato de fecha personalizado en Twig? En primer lugar, estoy tratando de editar el field.html.twigcampo llamado field_publication_date, en ese archivo encuentro esta variable {{ item.content }}que imprime Jun, 12/06/2016 - 12:29.

Esto es lo que he intentado: {{ item.content.field_publication_date|format_date('M') }}

Respuestas:


16

Intenta usar esto :

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

Pero, creo que obtendrá su solución en

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

Donde item.contentcontiene la cadena de fecha dentro del campo - nodo - field-publishing-date.html.twig .


2
format_datedebería ser la función, haciendo referencia a un formato de fecha de Drupal
Kevin


1
Gracias. La primera opción funcionó para mí {{item.content.field_publication_date | date ("M")}}
Ricardo Castañeda

2
Si es un campo de fecha, ¿por qué no son suficientes los ajustes del formateador de campo? Además, si se trata de una marca de tiempo, format_date es un filtro de ramita de Drupal al que puede pasar formatos de fecha personalizados a: drupal.org/docs/8/theming/twig/…
Kevin

1
@kevin fingí usar display suite y por token mostrar las fechas en diferentes divs. Pero de alguna manera la fecha personalizada no funcionó para mí.
Ricardo Castañeda

14

Primero, cree el formato de fecha personalizado my_custom_date_formaten la sección de configuración del administrador de drupal.

En segundo lugar, use el format_datefiltro Twig, como aquí:

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

Puede ser necesario convertir la fecha a una marca de tiempo de Unix, primero. Eso se verá así:

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

1
El segundo ejemplo de código no funcionó para mí, ya que el "valor" en la matriz de contenido (content.field_date.value) era nulo. Sospecho que aparece o no en función del formateador de pantalla utilizado para ese campo. Tuve que usar node.field_date.value|date('U')en su lugar.
George

@George tiene razón, la .valueclave generalmente solo está disponible para campos de entidades como node, usero paragraph, pero no dentro de las matrices de representación ( content). Edité el segundo ejemplo para usar la nodevariable
Hudri

2

El \Drupal\datetime\Plugin\Field\FieldType\DateTimeItemtiene un valor y una propiedad de fecha. El valuees UTC y datese calcula. Use la propiedad de fecha para evitar tener que lidiar con la zona horaria, y puede usar un formato creado o uno personalizado:

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

Formato de fecha en Drupal:

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


Esto es lo que funcionó para mí: {{node.field_event_date.date | date ('U') | format_date ('custom', 'F j, Y')}}
arnoldbird

Hola @arnoldbird, ¿puedes explicarme qué date('U')hace?
Aman Devrath

1

Sé que esta pregunta se refiere específicamente a formatear el valor de un campo de fecha dado, pero necesitaba formatear la fecha en que se creó el nodo. En caso de que lo necesite, esto es lo que funciona para mí (después de probar varias opciones diferentes):

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

Aquí es donde obtuve esta solución de: https://www.drupal.org/forum/support/theme-development/2016-02-17/how-to-get-formatted-node-creation-date-in-d8 # comentario-10865464


0

Esto funcionó para mí. El valor de fecha con la función de formato date () de twig:

{{ content.field_arrival_date.value | date("Y/m/d") }}
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.