2つの日付を比較したいですか?私はデータベース内の日付が2日以内の日付より古いかどうかをチェックする条件を作りたいと思います。ここで流体比較日
は私の二つの変数です:
{<f:format.date format="d.m.Y">+2 days</f:format.date>}
{<f:format.date format="d.m.Y">{day.valid}</f:format.date>}
私はテンプレートではなく、モデルやコントローラでこれを解決したいです。
2つの日付を比較したいですか?私はデータベース内の日付が2日以内の日付より古いかどうかをチェックする条件を作りたいと思います。ここで流体比較日
は私の二つの変数です:
{<f:format.date format="d.m.Y">+2 days</f:format.date>}
{<f:format.date format="d.m.Y">{day.valid}</f:format.date>}
私はテンプレートではなく、モデルやコントローラでこれを解決したいです。
<f:if condition="{f:format.date(date: '+2 days' format: 'Y-m-d')} < {f:format.date(date: yourdate, format: 'Y-m-d')}">
<f:then>
yourdate is smaller than now + 2 days.
</f:then>
<f:else>
yourdate is greater than now + 2 days.
</f:else>
</f:if>
format="U"
を使用して日付をUNIXのタイムスタンプに変換して比較します。比較日を含む変数を追加する必要があります。ここで
<f:if condition="{f:format.date(date: day.valid, format: 'U')} > {f:format.date(date: date_compare, format: 'U')}">
Date is valid
</f:if>
現在の日付に追加して、コンテンツの日付といくつかの計算をして、私の現在のソリューションです。コントローラで
、データに現在の日付を追加:
$this->view->assign('date_now', new \DateTime());
これは次いで、流体中{date_now}として入手可能である:
<f:if condition="{f:format.date(date: date_now, format: '(Y-m-d)')} > {f:format.date(date: '{event.date}-4 weeks', format: '(Y-m-d)')}">
<f:then>
<p>Event date is past</p>
</f:then>
<f:else>
<p>Event date is upcoming</p>
</f:else>
</f:if>
注方法右側に、いくつかの計算が行われる場合は、別の引用符と中括弧が入ります('{event.date}-4 weeks'
)。
PS日付比較のためにY-m-d
からU
までのフォーマットが好んでいます。私たちは現在の時刻 - ちょうど日付を比較したくないからです。
実際には、DateTimeにFluidでサポートされているgetterメソッドに完全に準拠するgetTimestamp
メソッド(http://php.net/manual/en/datetime.gettimestamp.php、5.3.0以降)があるので、次のことは完全に可能です。 $の日付1と$ date2のを考えると、テンプレートに割り当てられ、両方のDateTimeインスタンスです:
<f:if condition="{date1.timestamp} < {date2.timestamp}">...</f:if>
は、日付をフォーマットすることなくUnixタイムスタンプ整数ように2つの日付を比較します。したがって、あなたのケースでは、コントローラーアクションから$date = (new \DateTime('now'))->modify('+2 days');
を割り当てて、それをFluidのアクションと比較してください。または、time()
タイムスタンプを割り当て、それを直接比較して、DateTimeの使用をスキップしてください。
閉じる ''はそこにあっても見ることもコピーすることもできません。 –
空白が必要 – Urs