2016-05-05 8 views
1

それは正しいでしょうか?使用のため<>オペレーターのPHPの比較のために?それは正しいでしょうか?使用のため< , >オペレーターのPHPの比較日ですか?

私はそれをテストしました。そしてそれは良い仕事です。しかし、私は使用についての助言のための文書を設立していません<>オペレーターphp。

私は、<>演算子をPHPで比較することができますか教えてください。

<?PHP 
$today = "2010-10-19"; 
$expired = "2012-12-10"; 

if($expired > $today) 
{ 
    echo "not expired"; 
} 
else 
{ 
    echo "expired"; 
} 
?> 
+0

安全な方法は、ところでDateTimeインスタンスを使用することです。 –

+0

このPHPでは、通常の文字列の比較を行います。これは、日付が正しい形式で左から右に比較される場合にのみ比較が機能することを意味します。だから、場合によっては機能しますが、日付をタイムスタンプに変換して比較することをお勧めします。 – Rizier123

答えて

5

とタイムスタンプを比較することができます。文字列として比較されるので、より大きな日付コンポーネントが最初にあり、小さいコンポーネントが最後になるようにする必要があります。たとえば、年、月、次に日付。常に先行ゼロを含めます。それがあなたの例でやっているので、うまくいきます。

この形式の日付をお持ちでない場合、比較はの一部でに失敗します。たとえば:DateTimeオブジェクトが同等であるともうるう年とDSTのように関連するすべてのものの日付を占めるよう日付を比較する

'2016-07-04' > '2016-01-07' // true 
'04-07-2016' > '07-01-2016' // false 

最良の方法はDateTime()です。

<?PHP 
$today = new DateTime("2010-10-19"); 
$expired = new DateTime("2012-12-10"); 

if($expired > $today) 
{ 
    echo "not expired"; 
} 
else 
{ 
    echo "expired"; 
} 
1

使用strtotimeそれはUnixタイムスタンプに日時記述を変換して、あなたは簡単に限り、あなたの日付が、これは動作します同等の形式であるよう< or> operater

$today = strtotime('2010-10-19');// return 1287426600 

$expired = strtotime('2012-12-10');// return 1355077800 

if ($expired > $today) {// easily comparison of 1355077800 > 1287426600 
    echo "not expired"; 
} else { 
    echo "expired"; 
} 
+1

OPのコードが正確に動作する理由と、彼のメソッドに対して 'strtotime()'を使う理由を説明したいかもしれません。 – Rizier123

関連する問題