我需要用 PHP 时间戳减去 mySQL 时间戳。收到"date_diff() expects parameter 1 to be DateTimeInterface, array given"错误



我觉得这应该很容易,但我已经卡了很长时间,所以我正在向我的堆栈溢出朋友寻求帮助。我想做的只是从我的 mySQL 表中获取当前时间戳,然后从当前的 php 服务器时间戳中减去它。mySQL 格式是

chat_time时间戳 current_timestamp((

插入完成后看起来像这样

2020-06-22 14:51:41

所以在我的 php 代码中我写了这个

//chat countdown logic
$curDate = getdate();
$mysqlTimestamp = $row['chat_time'];
$dif=date_diff($curDate,$mysqlTimestamp);
$row['chat_time'] = $dif;
//end of chat countdown logic

知道我做错了什么吗?

以下是我最终在上述用户的建议下弄清楚它的方式。

$dteStart = new DateTime($row['chat_time']);
$dteEnd   = new DateTime("now");
$dteDiff  = $dteStart->diff($dteEnd);
$row['chat_time'] = $dteDiff->format("%H:%I:%S");

创建新的 DateTime(( 是同步数据库和 php 日期以使用 diff(( 函数的关键。

date_diff()

不接受2 个日期作为字符串

手册

所以你必须先将字符串转换为日期时间对象

// date time now
$curDate = new DateTime();      
// make a datetime object from a timestamp
$mysqlTimestamp = (new DateTime)->setTimestamp($row['chat_time']);
$diff = date_diff($curDate, $mysqlTimestamp);
$print_r($diff);    // see what you get

最新更新