2016-04-25 4 views
0

現在の日付と締め切り日を比較する正しい方法はありますか?現在の日付と締め切り日を比較する正しい方法がありますか?

date_default_timezone_set('Asia/Jakarta'); 
$deadline = date('2016-04-26 23:59:59'); 
$deadline = strtotime($deadline); 
$now = strtotime("now"); 

if ($now > $deadline) { 
    echo 'Deadline has passed.'; 
} elseif ($now === $deadline) { 
    echo 'The same time.'; 
} else { 
    echo 'You have time'; 
} 
+1

は、あなたがそれを試してみましたか?期待した結果が得られますか? –

+0

試してみました。しかし、もっと正しい方法がありますか? – SianiparD

+1

はい、はいあります –

答えて

1

あなたが指定したコードは意図したとおりに動作するはずですが、やや古めのスタイルです。 「最新の」バージョンはDateTime family of objectsを使用しています。

$tz = new DateTimezone('Asia/Jakarta'); 
$deadline = new DateTime('2016-04-26 23:59:59', $tz); 
$now = new DateTime('now'); 

if ($now > $deadline) { 
    echo 'Deadline has passed.'; 
} elseif ($now === $deadline) { 
    echo 'The same time.'; 
} else { 
    echo 'You have time'; 
} 

このアプローチの利点の1つは、デフォルトのタイムゾーンをグローバルに変更する必要がないことです。

+0

私はそれが好きです、それは非常に明確です。 – SianiparD

2

これは現在の日付と期限を比較する正しい方法ですか?

IMO なし、あなたがDateTime classを使用する必要があり、すなわち:

<?php 

date_default_timezone_set('Asia/Jakarta'); 
$deadLine = new DateTime('2016-04-26 23:59:59'); 
$deadLine->format("Y-m-d H:i:s"); 
$now = new DateTime(); 

if ($now > $deadLine) { 
    echo 'Deadline has passed.'; 
} elseif ($now == $deadLine) { 
    echo 'Same time'; 
} else { 
    $interval = $now->diff($deadLine); 
    echo 'You have ' . $interval->format('%R%a days'); 
} 

Ideone Demo

関連する問題