30

オブジェクトを使用して、日付が未来かどうかを判断しようとしていDateTimeますが、常に肯定的に返されます。

$opening_date = new DateTime($current_store['openingdate']);
$current_date = new DateTime();
$diff = $opening_date->diff($current_date);
echo $diff->format('%R'); // +

if($diff->format('%R') == '+' && $current_store['openingdate'] != '0000-00-00' && $current_store['openingdate'] !== NULL) {
    echo '<img id="openingsoon" src="/img/misc/openingsoon.jpg" alt="OPENING SOON" />';
}

問題は、常に正であるため、画像が表示されるべきではない場合に表示されることです。

私は何か愚かなことをしているに違いありませんが、それは何ですか、それは私を狂気に駆り立てています!

4

4 に答える 4

81

思ったより簡単です。DateTimeオブジェクトとの比較を行うことができます:

$opening_date = new DateTime($current_store['openingdate']);
$current_date = new DateTime();

if ($opening_date > $current_date)
{
  // not open yet!
}
于 2013-02-26T15:18:54.277 に答える
10

DateTimeこれにはオブジェクトは必要ありません。これを試して:

$now = time();
if(strtotime($current_store['openingdate']) > $now) {
     // then it is in the future
}
于 2013-02-26T15:17:54.540 に答える
5

DateTime オブジェクトを通常の比較演算子で比較できます。

  $date1 = new DateTime("");                                                   
  $date2 = new DateTime("tomorrow");

  if ($date2 > $date1) {
      echo '$date2 is in the future!';
  }

現在のコードについては、これを試してください:

$opening_date = new DateTime($current_store['openingdate']);
$current_date = new DateTime();

if ($opening_date > $current_date) {
    echo '<img id="openingsoon" src="/img/misc/openingsoon.jpg" alt="OPENING SOON" />';
}
于 2013-02-26T15:20:50.307 に答える