2016-03-31 24 views
0

PHPのif/else if文の短いシリーズを使用しています。これらのステートメントの中で、私はそれは、次のような具体的な日付であるかどうかを確認するための条件をチェックしています:、PHP IF文で書式設定された日付

$timezone  = date_default_timezone_set('America/Chicago'); 
    $TheDate  = date("F j, Y, g:i a"); 
    if ($TheDate >= "March 30, 2016, 9:00 pm" && $TheDate <= "March 30, 2016, 9:59 pm") { 
echo "this" 
} 

else if ($TheDate >= "April 1, 2016, 10:00 am" && $TheDate <= "April 1, 2016, 4:00 pm") { 
echo "that" 
} 

は、私は何が起こっているか見当がつかないが、私は、現在の時間を過ぎて日付を伸ばすことができませんもし私がそうするなら、エコーの私のelse文 ""が表示されます。

たとえば、 の文章を書くと、2016年3月30日午前10時から2016年3月30日午後12時までは、これは機能しませんが、私が表示したいものは表示されません。

ただし、2016年3月30日午前10時から2016年3月30日午前10時55分以下の場合は動作します。

どのように私はこれを修正できますか?

+1

いずれかの日付文字列 – Ghost

答えて

2

あなたが探しているものはstrtotimeだと思います。

<?php  
date_default_timezone_set('America/Chicago'); 

$TheDate = strtotime('March 30, 2016, 9:30 pm'); 

//$TheDate = strtotime(date('F j, Y, g:i a')); 
//$TheDate = time(); // This is much better for getting the current unix timestamp. 

if($TheDate >= strtotime('March 30, 2016, 9:00 pm') && $TheDate <= strtotime('March 30, 2016, 9:59 pm')) { 
    echo 'this'; 
} 
elseif($TheDate >= strtotime('April 1, 2016, 10:00 am') && $TheDate <= strtotime('April 1, 2016, 4:00 pm')) { 
    echo 'that'; 
} 
else { 
    echo 'neither'; 
} 
+0

変数、Unixタイムスタンプや日時は比較を行うためにオブジェクトを使用していない、 'のstrtotime(' 2016年3月30日、午後9時30分 ');これは書式設定だけを表していますか?別の文で月が異なる場合、または年が異なる場合はどうなりますか? – Marlon

+0

私はあなたの質問に日付関数を使用したので、strtotimeを使って日付関数を逆にすることができることを示しました。 – Brogan

+0

strtotimeは、解釈しようとしている文字列のunixタイムスタンプを返します。 1970年1月1日のUnixエポックからの秒数です。time関数は、現在のunixタイムスタンプを返します。 https://en.wikipedia.org/wiki/Unix_time – Brogan