開始日と終了日を持つエンティティがあります。
小枝を使用してそれらの時間差を取得することは可能ですか?
PHP 5.3以降、拡張機能を記述しない別のオプションがあります。
この例は、複数の日/日を計算する方法を示しています
_{# endDate and startDate are strings or DateTime objects #}
{% set difference = date(endDate).diff(date(startDate)) %}
{% set leftDays = difference.days %}
{% if leftDays == 1 %}
1 day
{% else %}
{{ leftDays }} days
{% endif %}
_
説明:
PHP 5.3 DateTime
オブジェクトには diff()
メソッドがあり、 DateInterval
endDate
とbeginDate
Twigの結果が異なるオブジェクト
Twig date
関数は常にDateTime
オブジェクトを返すため、diff
メソッドを呼び出すことができます
最後に、DateInterval
オブジェクトのプロパティにアクセスするか、Twig date
フィルターでフォーマットします。
注:変数が既にendDate
オブジェクトである場合は、startDate
関数でdate
またはDateTime
をラップする必要はありません。
注2:ここではDateTime
はDateTimeInterface
の同義語として使用されます。
そのための組み込み関数はありませんが、自分で簡単に行うことができます。 extending twig は簡単です!
Quick'n'easyの方法は、twigのシンプルな関数クラスを使用することです。
$function = new Twig_SimpleFunction('date_difference', function ($start, $end) {
// ... calculate difference and return it
});
// assuming $twig is an instance of Twig_Environment
$twig->addFunction($function);
再利用可能な方法は、twig拡張機能(同じリンクに文書化されています)を作成することです。それでも簡単です。
また、time_diffフィルターを提供するSensio Labsの既存の 日付拡張 があることに注意してください。
その後、次のように使用できます:{{ entity.ending_date|time_diff(entity.starting_date) }}