Làm cách nào để in định dạng ngày tùy chỉnh trong Twig?


14

Làm cách nào tôi có thể in định dạng ngày tùy chỉnh trong Twig? Trước hết tôi đang cố gắng chỉnh sửa field.html.twigtrường được gọi field_publication_date, trong tệp đó tôi tìm thấy biến {{ item.content }}này in Jun, 12/06/2016 - 12:29.

Đây là những gì tôi đã thử: {{ item.content.field_publication_date|format_date('M') }}

Câu trả lời:


16

Hãy thử sử dụng cái này -

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

Nhưng, tôi nghĩ rằng bạn sẽ nhận được giải pháp của bạn trong

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

Nơi item.contentchứa chuỗi ngày bên trong trường - nút - trường-ấn phẩm-date.html.twig .


2
format_datephải là chức năng, tham chiếu định dạng ngày từ Drupal
Kevin

1
Đã được tham khảo từ đây- twig.sensiolabs.org/doc/2.x/filters/date.html
Ashish Deynap

1
Cảm ơn bạn. Tùy chọn đầu tiên hoạt động với tôi {{item.content.field_publication_date | date ("M")}}
Ricardo Castañeda

2
Nếu đó là trường ngày, tại sao cài đặt định dạng trường không đủ? Ngoài ra nếu đó là dấu thời gian, format_date là bộ lọc twig Drupal, bạn có thể chuyển các định dạng ngày tùy chỉnh sang: drupal.org/docs/8/theming/twig/ Lỗi
Kevin

1
@kevin Tôi giả vờ sử dụng bộ hiển thị và mã thông báo hiển thị ngày ở các div khác nhau. Nhưng bằng cách nào đó ngày tùy chỉnh không làm việc cho tôi.
Ricardo Castañeda

13

Đầu tiên, tạo định dạng ngày tùy chỉnh my_custom_date_formattrong phần cấu hình của quản trị viên drupal.

Thứ hai, sử dụng format_datebộ lọc Twig, như ở đây:

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

Trước tiên, có thể cần phải chuyển đổi ngày thành dấu thời gian unix. Điều đó sẽ trông như thế này:

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

1
Ví dụ mã thứ hai không hoạt động với tôi, vì "giá trị" trên mảng nội dung (content.field_date.value) là null. Tôi nghi ngờ nó xuất hiện hay không dựa trên định dạng hiển thị được sử dụng cho trường đó. Tôi đã phải sử dụng node.field_date.value|date('U')thay thế.
George

@George là đúng, .valuekhóa thường chỉ có sẵn cho các trường từ các thực thể như node, userhoặc paragraph, nhưng không nằm trong mảng kết xuất ( content). Tôi đã chỉnh sửa ví dụ thứ 2 để sử dụng nodebiến
Hudri

2

\Drupal\datetime\Plugin\Field\FieldType\DateTimeItemmột giá trị và một tài sản ngày. Các valuelà UTC và dateđược tính. Sử dụng thuộc tính ngày để tránh phải xử lý múi giờ và bạn có thể sử dụng định dạng đã tạo hoặc tùy chỉnh:

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

Định dạng ngày trong Drupal:

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


Đây là những gì làm việc cho tôi: {{node.field_event_date.date | date ('U') | format_date ('custom', 'F j, Y')}}
arnoldbird

Xin chào @arnoldbird, bạn có thể giải thích cho tôi những gì date('U')không?
Aman Devrath

1

Tôi biết câu hỏi này đề cập cụ thể đến việc định dạng giá trị của trường ngày đã cho, nhưng tôi cần định dạng ngày mà nút được tạo. Trong trường hợp bạn cần điều đó, đây là những gì phù hợp với tôi (sau khi thử một vài tùy chọn khác nhau):

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

Đây là nơi tôi đã nhận được giải pháp này từ: https://www.drupal.org/forum/support/theme-development/2016/02/17/how-to-get-formatted-node-creation-date-in-d8 # bình luận-10865464


0

Điều này làm việc cho tôi. Giá trị ngày với hàm định dạng date () của twig:

{{ content.field_arrival_date.value | date("Y/m/d") }}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.