执行时间查询时遇到问题

时间:2018-06-01 09:44:09

标签: php datetime mysqli

我从数据库中获取时间并执行某些条件,但它无法正常工作。我无法理解此代码中的问题是什么。我的代码

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";
  }

我无法理解的问题是什么。它总是执行其他部分。我的数据库看起来像enter image description here

2 个答案:

答案 0 :(得分: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";
}

答案 1 :(得分:1)

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

 import {HttpClient} from '@angular/common/http';
 ...
 facts:any=[];
 this.http.get('https://non-ssr-angular.firebaseio.com/facts.json').subscribe(data=>
 {this.facts=data});