2011-08-08 14 views
1

私は現在、SQLデータベースに255文字のVARCHARとして保存されている日付があります。私はこの文字列を次のように宣言しましたPHPの日付比較

//within an object... 
    $date = date(DATE_RFC822); 

今、後でコーディングで、私は実際に日付を比較する必要があることを認識しています。私の最初の、非常に素朴な試みは、このようにちょっと見えました。

if(object_1->date > object_2->date){ 
//do this that assumes that object_1 was created at a later date than object_2 
}else{ 
continue; 
} 

これは同じ日の異なる時間にうまくいきましたが、 1週間後にコードを使用すると、重大なバグが表示され始めました。

答えて

3

strtotime()は、文字列を他のunix時間値と簡単に比較できるunix時間(整数)に変換します。 PHP 5.2.8以降を使用している場合は、比較的簡単なDateTimeクラスを使用することもできます(詳細はthis questionを参照してください)。

1

DATE_RFC822形式の日付を比較することはできません。 PHPのMySQLおよびDateTimeまたはUnixタイムスタンプのDateまたはDateTimeフィールドを使用する必要があります。 DATE_RFC822文字列をPHPのDateTimeコンストラクタやstrtotime()で使用することは安全です。 (ただし、MySQLでDateまたはDateTimeを使用している場合は、日付別にソートして日付などで並べ替えることもできます)

PHP DateTimeオブジェクトは通常のPHP変数と同じように比較できるため、$date1 < $date2$date1$date2より前の場合。