计算自文本日期/时间值以来经过的时间

时间:2018-01-19 16:36:12

标签: php

我有一个数据库,我从中提取这个日期/时间值:2018-01-19 09:50:54

我想打印自该日期起经过的小时数和分钟数,与当前服务器时间有关:

我试试这段代码:

$prev_date = "2018-01-19 09:50:54" // extracted from DB

$date_now = date("Y-m-d H:i:s"); // 24-hour date-time, matches DB format

$interval = $prev_date->diff($date_now); // I saw this on another thread 

echo $interval->format('%h')." Hours ".$interval->format('%i')." Minutes";

我明白了:

  

致命错误:在非对象上调用成员函数diff()   $ interval = .... line)

我想这是某种格式化问题,我该如何解决?

1 个答案:

答案 0 :(得分:3)

$prev_date不是对象。您需要转换为DateTime对象才能使用diff。此外,date()将返回一个字符串,您必须使用DateTime对象才能使用diff函数。

$prev_date = DateTime::createFromFormat('Y-m-d H:i:s', '2018-01-19 09:50:54');

$date_now = new DateTime(); // 24-hour date-time, matches DB format

$interval = $prev_date->diff($date_now); // I saw this on another thread 

echo $interval->format('%h')." Hours ".$interval->format('%i')." Minutes";