1

php date()関数に関して奇妙な結果が出ています。基本的に、文字列形式のMysqlデータベースから日付を取得し、3つの要素に分割します。これは、日、月、年(たとえば、2012年9月15日)になります。最終的に2つの日付を比較して、有効期限が切れているかどうかを確認します。しかし、問題は、特定の日付のみがコードの機能を許可し、一部はまったく機能しない(またはifステートメントが効果的に機能することを許可する)ことです。以下は私のコードです。

 $today = date("d-m-Y");

$expire = date("d-m-Y",strtotime($this->getData('date_day')."-".
$this->getData('date_month')."-".$this->getData('date_year'))) ;

 if ($expire < $today)
{
    echo 'expired';
}
else
{
    echo 'Not expired';
}

確かに簡単なことですが、どういうわけか解決できません。

4

2 に答える 2

5

Unixタイムスタンプを比較する必要があります。

$today = time();

$expire = strtotime($this->getData('date_day')."-".
$this->getData('date_month')."-".$this->getData('date_year')) ;

if ($expire > $today)
{
    echo 'expired';
}
else
{
    echo 'Not expired';
}
于 2012-09-13T17:41:18.647 に答える
0

strtotime米国の日付形式が期待されているようです。有効な日付を生成するには、月と日を入れ替える必要があります。

$today = date("d-m-Y");

$expire = date("d-m-Y",strtotime($this->getData('date_month')."-".
$this->getData('date_day')."-".$this->getData('date_year'))) ;

一方、Stephen305の回答を参照してください。これは、問題に対するはるかに優れた解決策です。

于 2012-09-13T17:44:13.293 に答える