Como imprimir o formato de data personalizado no Twig?


14

Como posso imprimir um formato de data personalizado no Twig? Antes de tudo, estou tentando editar o field.html.twigcampo chamado field_publication_date, nesse arquivo, encontro essa variável {{ item.content }}que imprime Jun, 12/06/2016 - 12:29.

Isto é o que eu tentei: {{ item.content.field_publication_date|format_date('M') }}

Respostas:


16

Tente usar isso -

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

Mas acho que você encontrará sua solução em

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

Onde item.contentcontém a sequência de datas dentro do campo - nó - campo-publicação-data.html.twig .


2
format_datedeve ser a função, fazendo referência a um formato de data de Drupal
Kevin


11
Obrigado. A primeira opção funcionou para mim {{item.content.field_publication_date | date ("M")}}}
Ricardo Castañeda

2
Se for um campo de data, por que as configurações do formatador de campo não são suficientes? Além disso, se for um carimbo de data / hora, format_date é um filtro de galho do Drupal, você pode passar formatos de data personalizados para: drupal.org/docs/8/theming/twig/…
Kevin

11
@kevin Eu fingi usar o conjunto de exibição e, por token, mostre as datas em diferentes divs. Mas de alguma forma a data personalizada não funcionou para mim.
Ricardo Castañeda

14

Primeiro, crie o formato de data personalizado my_custom_date_formatna seção de configuração do drupal admin.

Segundo, use o format_datefiltro Twig, como aqui:

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

Pode ser necessário converter a data em um registro de data e hora unix, primeiro. Isso ficará assim:

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

11
O segundo exemplo de código não funcionou para mim, pois "value" na matriz de conteúdo (content.field_date.value) era nulo. Eu suspeito que ele apareça ou não com base no formatador de exibição usado para esse campo. Eu tive que usar em seu node.field_date.value|date('U')lugar.
George George

@ George está certo, a .valuechave geralmente está disponível apenas para campos de entidades como node, userou paragraph, mas não dentro de matrizes de renderização ( content). Eu editei o segundo exemplo para usar a nodevariável
Hudri 07/01

2

O \Drupal\datetime\Plugin\Field\FieldType\DateTimeItemtem um valor e uma propriedade de data. O valueé UTC e o dateé calculado. Use a propriedade date para evitar ter que lidar com o fuso horário e você pode usar um formato criado ou personalizado:

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

Formato da data no Drupal:

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


Aqui está o que funcionou para mim: {{node.field_event_date.date | data ( 'U') | format_date ( 'costume', 'F j, Y')}}
arnoldbird

Oi @arnoldbird, você pode me explicar o que date('U')faz?
Aman Devrath

1

Eu sei que esta pergunta se refere especificamente à formatação do valor de um determinado campo de data, mas eu precisava formatar a data em que o nó foi criado. Caso você precise disso, é isso que funciona para mim (depois de tentar várias opções diferentes):

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

Foi aqui que obtive esta solução: https://www.drupal.org/forum/support/theme-development/2016-02-17/how-to-get-formatted-node-creation-date-in-d8 # comment-10865464


0

Isso funcionou para mim. O valor da data com a função de formato date () do galho:

{{ content.field_arrival_date.value | date("Y/m/d") }}
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.