0

我正在从数据数据库中获取时间并执行一些条件,但它不能正常工作。我不明白这段代码有什么问题。我的代码

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 部分。我的数据库看起来像这样在此处输入图像描述

4

2 回答 2

4

您不能将 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";
}
于 2018-06-01T09:52:56.520 回答
1

您应该尝试此功能以使您的数据格式正确

$openingTime = date_create_from_format('H : i A', $your_variable);
$closingTime = date_create_from_format('H : i A', $your_variable);
于 2018-06-01T10:50:14.760 回答