mysql — вычитание системного времени php из элемента datetime в SQL

Я пробую список время напоминания на листинге аукциона. Ниже приведен 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");

эта линия, кажется, не работает. Это ошибки:

Неустранимая ошибка: вызов функции-члена diff () для необъекта в controllers / lists.php в строке 28

1

Решение

Я не эксперт PHP, но в соответствии с документами есть datetime diff а также дата и время.

в общем, если невозможно вычислить напрямую, я склонен конвертировать в unixtime секунды, вычислять и конвертировать обратно в datetime.

0

Другие решения

Вам нужно создать объекты DateTime в PHP из результатов вашего запроса.

$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.

0