比较php和mysql时间的时间并没有给出正确的结果

时间:2015-12-17 15:36:28

标签: php mysql

几小时的Mysql表(字段类型time):

opened             closed
12:00:00           23:59:00

在php中,我需要检查当前时间是否在这两次之间。

我已经将php当前服务器时间转换为mysql时间格式

$cur_time = date('H:m A',$_SERVER['REQUEST_TIME']);
$cur_time = DateTime::createFromFormat( 'H:i A',$cur_time);
$cur_time = $cur_time->format('H:i:s');

然后我比较了时间 -

if($cur_time > $biz_hours['opened'] && $cur_time < $biz_hours['closed'])

注意:$biz_hours是从mysql表中获取数据的数组。

打印$cur_time正在显示09:12:00。但如果caluse返回false。这是实时网站网址:http://dsbangladesh.com/takeout-banani/b/10。请帮我找到问题所在。

3 个答案:

答案 0 :(得分:1)

if (time() > strtotime($biz_hours['opened']) && time() < strtotime($biz_hours['closed']))

答案 1 :(得分:1)

您正在使用的比较是一个简单的字符串比较。最好的办法是先将数据转换为时间戳。像这样:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

我使用$curTime = time(); $openTime = strtotime($biz_hours['opened']); $closeTime = strtotime($biz_hours['closed']); if($curTime > $openTime && $curTime < $closeTime) { .... 来获取当前服务器时间而不是您使用的方法。我还使用time将mysql时间字段转换为时间戳。

答案 2 :(得分:0)

<?php
   $biz_o = new DateTime(date('H:i:s',strtotime($biz_hours['opened'])));
   $biz_c = new DateTime(date('H:i:s',strtotime($biz_hours['closed'])));
   $now = new DateTime(date('H:i:s'),strtotime($_SERVER['REQUEST_TIME']));
   if($now > $biz_o && $now < $biz_c){
       //You got me
   }