从SQL datetime元素中减去php系统时间

时间:2014-09-14 04:12:40

标签: php mysql

我正在尝试列出拍卖列表中的提醒时间。下面是收集项目数据的SQL查询。数据库中有创建和结束时间,存储为datetime。在foreach结束时,我从系统中获取当前时间。

我想要的是它们之间的区别,以便我可以显示拍卖的剩余时间。我尝试了几种方法,但似乎无法解决它。我该怎么做?

$query = $this->db->query("SELECT * FROM tbl_auction_listing WHERE list_pk = $item LIMIT 1;");
            foreach ($query->result() as $row)
            {
               $sellerid = $row->seller_fk;

               $title = $row->title;

               $description = $row->description;

               $img_url = $row->image_url;
               $category = $row->category_fk;
               $starttime = $row->start_datetime;
               $endtime = $row->end_datetime;
               $startprice = $row->start_price;
               $reserve = $row->reserve_price;
               $buyprice = $row->bin_price;
               $visits = $row->visits;  
               $now = date("Y-m-d H:i:s");

            }

注意:

$remaining = $endtime->diff($now)->format("%m months, %d days, %H hours and %i minutes");

这条线似乎不起作用。它错误:

  

致命错误:在第28行的controllers / listings.php中的非对象上调用成员函数diff()

2 个答案:

答案 0 :(得分:0)

我不是php专家,但根据文档有datetime diffdatetime sub

一般情况下如果不能直接计算,我倾向于转换为unixtime秒,计算并转换回日期时间。

答案 1 :(得分:0)

您需要从查询结果中在PHP中创建DateTime对象。

$now        = new DateTime();
$endtime    = new DateTime($row->end_datetime);
$difference = $endtime->diff($now);
$remaining  = $difference->format("%m months, %d days, %H hours and %i minutes");

此外,您不能像在其他语言中一样使用PHP链接方法,例如JavaScript。