2017-04-30 3 views
1

です。日付が未来に設定されている場合、未来にも戻ります。は、私はそれが過去や</p> <p>将来にあるしかし、たとえ「DateToCheckは」過去、それは常に「将来的に」返していると思ったかどうかを確認するために<a href="https://3v4l.org/0gCRM" rel="nofollow noreferrer">attempting to compare two dates</a>午前将来

このSO questionをプライマーとして確認しました。

<?php 
date_default_timezone_set('UTC'); 
define("TIMESTAMP_FORMAT", "Y-m-d G:i:s"); 

$aString = "2017-03-01 23:11:16"; 
echo "String to convert: ". $aString ."\r\n"; 

$currentTime = date(TIMESTAMP_FORMAT); 
echo "Current Time: ". $currentTime."\r\n"; 

$dateToCheck = new DateTime($aString); 
echo "Date To Check: ". $dateToCheck->format(TIMESTAMP_FORMAT)."\r\n"; 

if($dateToCheck < $currentTime) { 
    echo 'Date is in the past'; 
} else { 
    echo 'Date is in the future'; 
} 
+0

まず、これが機能するサーバー時間 – 4EACH

答えて

1

サーバー日付は、あなたが使用することができ、正しいことを確認してください:

if (new DateTime() > new DateTime("2017-03-01 23:11:16")) { 
    # date is in the past 
}else{ 
    # date is in the future 
} 
+1

をチェックしますが、自分のバージョンがなぜ動作しないのですか?私にとっては、彼らは本質的に同じものであるように見えます。 –

+0

私はそれが日時オブジェクトではない '$ currentTime = date(TIMESTAMP_FORMAT);'と関係していると思います。 –

0

てみ使用エポック秒:

if($dateToCheck->format('U') < $currentTime->format('U')) { 
    echo 'Date is in the past'; 
} else { 
    echo 'Date is in the future'; 
} 
関連する問題