如何将我当前的时间和日期与db存储日期进行比较

时间:2014-07-08 10:46:40

标签: php date

这里我已经在db中存储了两个日期,比如开始日期为2014-07-07 00:00:00,结束日期为2014-07-15 23:59:59。现在我如何查看两天之间的当前日期     

$date1 = '2014-07-07 00:00:00';
$date2 = '2014-07-15 23:59:59';

$now = new DateTime();
$current_time = $now->format('Y-m-d H:i:s');?>

如果从db中检索date1和date2并与从服务器获取的当前日期进行比较,如果它在两天之间,则应该从现在开始显示结束时间。

5 个答案:

答案 0 :(得分:1)

使用:

$date1 = '2014-07-07 00:00:00';
$date2 = '2014-07-15 23:59:59';

$cdate1 = new DateTime($date1);
$vdate1 = $cdate1->getTimestamp();

$cdate2 = new DateTime($date2);
$vdate2 = $cdate1->getTimestamp();

将整数($ vdate1和$ vdate2)相互比较
结果将在几秒钟内

享受:)


答案 1 :(得分:1)

如果两个日期的格式完全相同,那么php允许进行字符串比较。

所以你可以做到以下几点:

if(strcmp($date1, $current_time) <= 0 and strcmp($date2, $current_time) > 0)
{
// The date is within the limits
}

strcmp是一个更安全的字符串比较函数

因此,在您的情况下,您可以拥有以下内容:

<?php 
    $con=mysqli_connect("localhost","root","","proms"); // Check connection
    if (mysqli_connect_errno()) { 
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }

    date_default_timezone_set("America/New_York");
    $current_time =date("h:i:sa");
    $result = mysqli_query($con,"SELECT * FROM image");
    while($row = mysqli_fetch_array($result)) { 
        if(strcmp($row['start_date'],$current_time) <= 0 && strcmp($row['end_date'],$current_time) > 0) {
            // The date is within the limits
            echo "yes";
        }
    }

?>

'start_date''end_date'应替换为您的字段名称。

答案 2 :(得分:1)

就像面向对象的样式替代方法一样,您可以将对象创建为DateTime类的实例,如下所示:

$date1 = new DateTime('2014-07-07 00:00:00');
$date2 = new DateTime('2014-07-15 23:59:59');
$now = new DateTime();

然后,按照您的逻辑,您可以比较now是否在其他日期之前或之后,例如:

var_dump($date2 > $now);

或者您可以使用以下命令检索DateInterval接口的实例:

$now_interval_from_date1 = $date1->diff($now);

然后使用format方法准确了解时间/日期等等差异,例如:

$now_interval_from_date1->format("%R%H hours")

您可以在此处找到格式参数: http://www.php.net/manual/it/dateinterval.format.php

答案 3 :(得分:0)

您可以执行以下操作来比较两个日期之间的当前时间

$date1 = '2014-07-07 00:00:00';
$date2 = '2014-07-15 23:59:59';
$now = date('Y-m-d H:i:s');

$date1TimeStamp = strtotime($date1);
$date2TimeStamp = strtotime($date2);
$nowTimeStamp = strtotime($now);

if($date1TimeStamp <= $nowTimeStamp || $date2TimeStamp >= $nowTimeStamp){
   $seconds_diff = $date2TimeStamp - $nowTimeStamp;
   $days = $seconds_diff/(3600*24);
}else
   echo 'No, out';

编辑后的计算,现在显示从现在到结束日期的剩余天数。

答案 4 :(得分:0)

if(strtotime('now') > strtotime($date1) && strtotime('now') < strtotime($date2)) {
       $diff = strtotime($date2) - strtotime('now');
} 
然后

$diff包含两个日期之间的差异(以毫秒为单位)。只需将毫秒转换为天:小时:分钟(数学?)