我正在尝试列表拍卖列表的重新分配时间。下面是用于收集项目数据的SQL查询。数据库中有一个创建时间和结束时间,存储为日期时间。在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()
im不是php专家,但根据文档,有datetime diff和datetime sub-
一般来说,如果不能直接计算,我倾向于转换为unixtime秒,计算并转换回datetime。
您需要根据查询结果在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");
此外,您不能像在其他语言(如JavaScript)中那样在PHP中链接方法。