2016-09-21 4 views
1

現在時刻と指定時刻を比較していますが、間違った結果になっています。PHPでユーザが指定した終了時刻と現在時刻を比較する

<?php 
    date_default_timezone_set('Asia/Kolkata'); 
    //echo date("h:i a"); 
    //echo $query2['endtime']; 
    if(date("h:i a") > $query2['endtime']) 
    { 
    $date = new DateTime(date("Y-m-d")); 
    $date->modify('+1 day'); 
    echo $date->format('Y-m-d'); 
    echo '<input type="date" name="date" id="date" min="'.$date->format('Y-m-d').'">'; 
    } 
    else 
    { 
    echo '<input type="date" name="date" id="date" min="'.date("Y-m-d").'">'; 
    } 

    ?> 

私は、データベースからの$ QUERY2 [「終了時刻を」]使用して終了時刻を持っていると私はecho.My終了時刻を使用してchechedされている5:00ですpm.But私は間違った結果にしなさいヘルプを取得しています。

+1

あなたはタイムスタンプを作るためのstrtotime()を使用して、@AzeezKallayiを説明することができます –

+0

をチェックする必要があります。 –

+0

答えとしてサンプルコードを追加しました。あなたの時間がdbに格納されている形式 –

答えて

1

を行うことは、あなたはその上で「>」の動作を確認することができません。まず、strtotime()を使って日付文字列をタイムスタンプに変換して比較する必要があります。コードはすでにDateTimeクラスを使用していると見て、あなたに

<?php 
date_default_timezone_set('Asia/Kolkata'); 
echo date("h:i a"); 
$query2= '05:00 pm'; 
$query21 =strtotime($query2); 
echo $query21; 
if(strtotime(date("h:i a")) > $query21) 
{ 
    echo "yes"; 
} 
else 
{ 
    echo "no"; 
} 
?> 
+0

if(strtotime(date( "h:i a"))> strtotime($ query2 ['endtime']))。 –

+0

はい。 $ query2 ['endtime']の形式が'05:00 pm 'の場合 –

+0

はい、午後5時です。 –

0

タイムスタンプはどこでも使用できますが、フォームの一貫性とどこでも移動できるため、タイムスタンプはどこにでも表示することができます。

は、私はあなたがして"INSERT INTO xx VALUES(etc, UNIX_TIMESTAMP(), etc, etc)"

としてデイブ時間が結果を比較するために、PHPでtime()を使用する必要があります示唆しています。また、date()を使用してプレゼンテーション可能な形式に変換することもできます。

UPDATE:日付()関数は、あなたの日付文字列を与えるので

は、あなたが今、タイムスタンプとして$query2['endtime']を持っていると仮定すると、ちょうど

if(time()>$query2['endtime']){ 
    //true 
} 


//and to show to user 
echo date('Y-m-d', $query2['endtime']); 
+0

コードを定義できますか?@ Caspar Wylie。 –

+0

if(strtotime(date( "h:i a"))> strtotime($ query2 ['endtime']))。 –

+0

これは、日付を保存して比較するときにタイムスタンプを使用することを提案しているからです。私の答えを読んでください –

0

を助けるかもしれないの下に、あなたはそれがそれらを比較するのは非常に些細だとわかります。このように:

<?php 

// Create the dtz object once, and save it for re-use 
$dtz = new DateTimeZone ("Asia/Kolkata"); 

// With the first parameter set to null it'll use the current time as well. 
// So I'm using "midnight" here to emulate the results of your old code. 
$date = new DateTime ("midnight", $dtz); 

// Now we can create a DateTime object for the user-supplied date. 
$endDate = new DateTime ($query2['endtime'], $dtz); 

// Since both are DateTime objects we can now compare them directly. 
if ($date > $endDate) 
{ 
    $date->modify ('+1 day'); 
    echo $date->format ('Y-m-d'); 
} 

echo '<input type="date" name="date" id="date" min="'.$date->format("Y-m-d").'">'; 
+0

ありがとうございます。@ ChristianF –

+0

よろしくお願いします。ちょうど今、コードにわずかな変更を加えました、btw。不必要にコードが重複しないようにする。 2つのエコーラインは基本的に同一で、条件が真でない場合、日付は「今日」となります。 あなたの質問に対する最善の答えをupvoteし、可能であれば受け入れてください。 :) – ChristianF

+0

ありがとう非常にありがとう。 –

関連する問題