bugfix> php > 投稿

データデータベースから時間を取得して、何らかの条件を実行していますが、正常に動作しません。このコードの問題点を理解できません。私のコード

date_default_timezone_set('Asia/Kolkata');
  $currentDay=date("l");
  $status="SELECT * FROM nesbaty_working_time WHERE provider_id='".$r."' AND day='".$currentDay."'";
  $qry_res2 = mysqli_query($con, $status);
     $array1 = mysqli_fetch_assoc($qry_res2);
     $opening_time = $array1['opening_time'];      
     $closing_time = $array1['closing_time'];     
     $currentTime=date("h:i A");
   if (($opening_time < $currentTime) && ($currentTime < $closing_time)) 
   {             
        $response['status'] = "Open";
   }
  else
  {
        $response['status'] = "Close";
  }

私が理解できない問題は何ですか。それは常にelse部分を実行します。私のデータベースはこんな感じ

回答 2 件
  • AM/PM時間を文字列として比較することはできません。現在の時刻が 11:00 AM の場合 、それは 05:00 PM より小さくない 、 1   0 よりも大きい 。そして、それが 01:00 PM の場合 、それは 10:00 AM より大きくありません 、 0   1 よりも小さい 。

    時刻を適切に比較するには、時刻を24時間に変換する必要があります。または、単にタイムスタンプに変換します。

    $currentTime = time();
    $openingTime = date_create_from_format('H : i A', $array1['opening_time']);
    $closingTime = date_create_from_format('H : i A', $array1['closing_time']);
    if ($openingTime <= $currentTime && $currentTime <= $closingTime) {
        $response['status'] = "open";
    } else {
        $response['status'] = "closed";
    }
    
    

  • この関数を試して、データを適切な形式にする必要があります

    $openingTime = date_create_from_format('H : i A', $your_variable);
    $closingTime = date_create_from_format('H : i A', $your_variable);
    
    

あなたの答え