답변:
그래서 이것을 조사하는 것보다 더 많은 시간을 보낸 후에, 나는 이것에 대한 두 가지 해결책을 생각해 냈습니다.
해결책 1
darol100이 그의 답변에서 언급 한 날짜 기능을 사용하는 것이 한 가지 방법입니다. 내 경우에 대한 그의 예제를 수정하여 node--article.html.twig
파일에서 변경했습니다.
{% trans %}Submitted by {{ author_name }} on {{ date }}{% endtrans %}
에
{% set createdDate = node.getCreatedTime|date('j F Y') %}
{% trans %}Submitted by {{ author_name }} on {{ createdDate }} {% endtrans %}
이 방법의 장점은 쉽고 빠릅니다. 단점은 Drupal의 내장 날짜 형식 시스템을 사용하지 않는다는 것입니다.
해결책 2
Drupal의 날짜 형식 시스템을 사용하기 위해 먼저에서 사용자 지정 형식을 만들었습니다 admin/config/regional/date-time
. 그런 node--article.html.twig
다음 다음과 같이 편집 했습니다.
{% set createdDate = node.getCreatedTime|format_date('my_custom_format') %}
{% trans %}Submitted by {{ author_name }} on {{ createdDate }} {% endtrans %}
여기서는 사용자 정의 형식의 이름을 " My Custom Format " 이라고 가정 하여 시스템 이름을 생성 my_custom_format
합니다.
이 솔루션에는 추가 단계가 필요하지만 더 Drupal 방식이라고 생각합니다.
이 페이지에서 Drupal의 Twig Filters 에 대해 배웠습니다 .
기사 컨텐츠 유형 레벨을 기준으로 날짜 형식을 변경하려는 경우. 다음 코드를 편집 / 추가하고 post.published_at|date
필터를 사용하여 날짜 형식을 변경할 수 있습니다.
node--article.html.twig
{# Here are few example #}
{{ post.published_at|date(format='j F Y') }} {# Output = 10 March 2001#}
{{ post.published_at|date(format="F j, Y, g:i a") }} {# Output = March 10, 2001, 5:16 pm#}
{{ post.published_at|date(format='m/d/Y') }} {# Output 10/3/2001 #}
Twig는 PHP 날짜 형식 과 동일한 이름 코드를 사용 합니다 . 나뭇 가지 날짜 형식에 대한 자세한 내용은 http://twig.sensiolabs.org/doc/filters/date.html을 방문하십시오.
<?php print format_date($node->created, 'custom', 'm/d/y'); ?>
.
나는 Chris의 솔루션 2를 더 좋아합니다.
format_date ()는 더 이상 사용되지 않으며 Drupal 9 이전에 제거됩니다 ... 언젠가 drupal 업데이트를 수행하면 중단됩니다.
대신 전처리 함수의 .theme 파일에서이 작업을 수행하는 것이 좋습니다.
function [theme_name]_preprocess_node(&$variables) {
$variables['date'] = \Drupal::service('date.formatter')->format($variables['node']->getCreatedTime(), 'my_custom_format');
}
듀크의 말에 대한 관찰 :
format_date ()는 더 이상 사용되지 않으며 Drupal 9 이전에 제거됩니다 ...
예. core / includes / common.inc에 정의 된 Drupal 함수 format_date () 는 실제로 더 이상 사용되지 않습니다. 그러나 나뭇 가지 필터 format_date () 를 사용할 때 Drupal이 TwigExtension :: getFilters () 에서 정의한 나뭇 가지 필터를 사용하는 대신 Drupal 함수를 호출하지 않고이 필터는 DateFormatter :: format ()을 호출합니다 .
따라서 나뭇 가지 필터 format_date ()를 사용하는 것이 안전하며 Chris의 솔루션 2가 좋습니다.
날짜 및 시간에 대한 모든 형식의 PHP를 가질 수 있습니다
// Assuming today is March 10th, 2001, 5:16:18 pm, and that we are in the
// Mountain Standard Time (MST) Time Zone
date("F j, Y, g:i a"); // March 10, 2001, 5:16 pm
date("m.d.y"); // 03.10.01
date("j, n, Y"); // 10, 3, 2001
date("Ymd"); // 20010310
date('h-i-s, j-m-y, it is w Day'); // 05-16-18, 10-03-01, 1631 1618 6 Satpm01
date('\i\t \i\s \t\h\e jS \d\a\y.'); // it is the 10th day.
$today = date("D M j G:i:s T Y"); // Sat Mar 10 17:16:18 MST 2001
date('H:m:s \m \i\s\ \m\o\n\t\h'); // 17:03:18 m is month
date("H:i:s"); // 17:16:18
date("Y-m-d H:i:s"); // 2001-03-10 17:16:18 (the MySQL DATETIME format)
{% set createdDate = node.getCreatedTime|date('F j, Y, g:i a') %}
<div class="newsSingleAuthorDate">
{% trans %}Submitted by <span>{{ author_name }}</span> on {{ createdDate }} {% endtrans %}
</div>
날짜의 문자 만 변경하고 주변 HTML 요소는 변경하지 않으려면 다음 후크를 사용하십시오.
function [theme_name]_preprocess_field(array &$variables) {
if ($variables['field_name'] === 'created') {
$timestamp = $variables['element']['#items']->value;
$markup = \Drupal::service('date.formatter')->format($timestamp, 'html_date');
$variables['items'][0]['content']['#markup'] = $markup;
}
}
교체 [theme_name]
테마의 이름과 html_date
원하는 시간 형식, 당신은 아래에서 찾을 수 그 중 하나 /admin/config/regional/date-time
.
node--article--full.html.twig에 다음 코드를 사용했습니다.
<li class="post-date">
{% set day = node.createdtime|date("d") %}
<span class="day">{{ day }}</span>
{% set month = node.createdtime|date("M") %}
<span class="month">{{ month }}</span>
</li>
{% set date = node.createdtime|date("M d, Y") %}
<span>{{ date }}</span>