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') }}

Ricardo Castañeda
fonte

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 .

Ashish Deynap
fonte
2
format_datedeve ser a função, fazendo referência a um formato de data de Drupal
Kevin
11
Foi
Ashish Deynap
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') }}
Philipp Zedler
fonte
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') }}

joelpittet
fonte
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

Marcos Buarque
fonte
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") }}
Robb Davis
fonte