将当前时间与用户在PHP中给出的结束时间进行比较

时间:2016-09-21 10:20:58

标签: 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 ['endtime']的终结时间,并且我已经使用echo进行了切换。我的结束时间是下午5:00。但是我得到了错误的结果。请帮助。

3 个答案:

答案 0 :(得分:1)

由于date()函数会给你日期字符串,你不能检查'&gt;'对此进行操作。首先,您需要使用strtotime()然后比较将日期字符串转换为时间戳。下面的代码可以帮助您

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

答案 1 :(得分:0)

你应该在任何地方使用时间戳,但是由于其形式的一致性以及在任何地方移动的能力而向用户显示时。

我建议您将时间设为"INSERT INTO xx VALUES(etc, UNIX_TIMESTAMP(), etc, etc)"

然后在php中使用time()来比较结果。您还可以使用date()将其转换为可呈现的格式。

更新:

假设您现在有$query2['endtime']作为时间戳,只需执行

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


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

答案 2 :(得分:0)

看到你已经在使用DateTime类,你会发现比较它们是非常简单的。像这样:

<?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").'">';