Сначала вы должны преобразовать свое время в объект datetime. Для этого я бы использовал функцию:
функции. php
function convert_date_to_format( $date_string, $format = 'Y-m-d' ) {
$date = DateTimeImmutable::createFromFormat(
'Ymd',
$date_string
);
return $date->format( $format );
}
Поскольку вы уже знаете формат даты вашей строки даты (Ymd
), вы можете использовать DateTimeImmutable::createFromFormat()
.
Объект datetime в PHP имеет метод format()
для вывода даты в определенном вами формате.
Здесь вы можете использовать функцию в вашем случае:
{% for post in events %}
{
title : '{{ post.title }} | {{ post.location }}',
start : '{{ fn('convert_date_to_format', post.start_date, 'Y-m-d') }}',
end : '{{ fn('convert_date_to_format', post.end_date, 'Y-m-d') }}',
color : '{{ post.type }}'
},
{% endfor %}
Теперь, на самом деле, это идеальный вариант использования для расширения вашего поста и перемещения ваших логи c из Twig в PHP. Если у вас есть доступ к определению переменной post
, вы можете создать определенный класс c для сообщений о событиях, расширив Timber\Post
.
<?php
class EventPost extends Timber\Post {
/**
* Converts a date from Ymd format to another format.
*
* @param string $date_string The date string in Ymd format.
* @param string $format The desired output format.
*
* @return string
*/
protected function convert_date_to_format( $date_string, $format ) {
$date = DateTimeImmutable::createFromFormat(
'Ymd',
$date_string
);
return $date->format( $format );
}
/**
* Gets formatted start date.
*
* @param string $format Optional. The preferred format. Default `Y-m-d`.
*
* @return string
*/
public function start_date( $format = 'Y-m-d' ) {
$date = $this->meta( 'start_date' );
return $this->convert_date_to_format( $date, $format );
}
/**
* Gets formatted end date.
*
* @param string $format Optional. The preferred format. Default `Y-m-d`.
*
* @return string
*/
public function end_date( $format = 'Y-m-d' ) {
$date = $this->meta( 'end_date' );
return $this->convert_date_to_format( $date, $format );
}
}
Вы можете подготовить post
следующим образом.
$context['post'] = new EventPost();
Ваш шаблон Twig будет выглядеть следующим образом:
{% for post in events %}
{
title : '{{ post.title }} | {{ post.location }}',
start : '{{ post.start_date('Y-m-d') }}',
end : '{{ post.end_date('Y-m-d') }}',
color : '{{ post.type }}'
},
{% endfor %}