Bagaimana cara mencetak format tanggal khusus di Ranting?

14

Bagaimana saya bisa mencetak format tanggal khusus di Ranting? Pertama-tama saya mencoba untuk mengedit field.html.twigbidang yang disebut field_publication_date, dalam file itu saya menemukan variabel ini {{ item.content }}yang dicetak Jun, 12/06/2016 - 12:29.

Inilah yang saya coba: {{ item.content.field_publication_date|format_date('M') }}

Ricardo Castañeda
sumber

Jawaban:

16

Coba gunakan ini -

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

Tapi, saya pikir Anda akan mendapatkan solusinya

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

Di mana item.contentberisi string tanggal di dalam bidang - simpul - bidang-publikasi-date.html.twig .

Ashish Deynap
sumber
2
format_dateseharusnya fungsinya, merujuk format tanggal dari Drupal
Kevin
1
Dapatkan referensi dari sini- twig.sensiolabs.org/doc/2.x/filters/date.html
Ashish Deynap
1
Terima kasih. Opsi pertama bekerja untuk saya {{item.content.field_publication_date | date ("M")}}
Ricardo Castañeda
2
Jika ini adalah bidang tanggal, mengapa pengaturan formatter bidang tidak cukup? Juga jika stempel waktu, format_date adalah filter ranting Drupal, Anda dapat mengirimkan format tanggal khusus ke: drupal.org/docs/8/theming/twig/…
Kevin
1
@ kevin Saya pura-pura menggunakan tampilan suite dan dengan token menunjukkan tanggal dalam div yang berbeda. Tetapi entah bagaimana tanggal khusus tidak berfungsi untuk saya.
Ricardo Castañeda
14

Pertama, buat format tanggal khusus my_custom_date_formatdi bagian konfigurasi admin drupal.

Kedua, gunakan format_datefilter Twig, seperti di sini:

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

Mungkin perlu mengubah tanggal menjadi cap waktu unix, pertama. Itu akan terlihat seperti ini:

{{ node.my_date_field.value|date('U')|format_date('my_custom_date_format') }}
Philipp Zedler
sumber
1
Contoh kode kedua tidak berfungsi untuk saya, karena "nilai" pada larik konten (content.field_date.value) adalah nol. Saya menduga itu muncul atau tidak berdasarkan formatter tampilan yang digunakan untuk bidang itu. Saya harus menggunakan node.field_date.value|date('U')sebagai gantinya.
George
@ George benar, .valuekuncinya biasanya hanya tersedia untuk bidang dari entitas seperti node, useratau paragraph, tetapi tidak di dalam render array ( content). Saya mengedit contoh ke-2 untuk menggunakan nodevariabel
Hudri
2

The \Drupal\datetime\Plugin\Field\FieldType\DateTimeItemmemiliki nilai dan properti date. Ini valueadalah UTC dan datedihitung. Gunakan properti tanggal untuk menghindari keharusan berurusan dengan zona waktu, dan Anda dapat menggunakan format yang dibuat atau yang khusus:

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

Format tanggal dalam Drupal:

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

joelpittet
sumber
Inilah yang bekerja untuk saya: {{node.field_event_date.date | date ('U') | format_date ('custom', 'F j, Y')}}
arnoldbird
Hai @arnoldbird, bisakah Anda menjelaskan kepada saya apa yang date('U')terjadi?
Aman Devrath
1

Saya tahu pertanyaan ini merujuk secara khusus untuk memformat nilai bidang tanggal yang diberikan, tetapi saya perlu memformat tanggal node dibuat. Jika Anda membutuhkannya, inilah yang bekerja untuk saya (setelah mencoba beberapa opsi berbeda):

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

Di sinilah saya mendapatkan solusi ini dari: https://www.drupal.org/forum/support/theme-development/2016-02-17/how-to-get-formatted-node-creation-date-in-d8 # comment-10865464

Marcos Buarque
sumber
0

Ini berhasil untuk saya. Nilai tanggal dengan fungsi format date () sendiri ranting:

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