第一关 - 我通过PHP
计算差异
我试图创建一种点击一个按钮来设置“计时器”使用使用MySQL
的MySQLi Procedural
方法。据我所知,做到这一点的最佳方式(在动态计时器上 - IE:点击5分钟)是计算time()
距离“现在”5分钟的时间。
如果用户断开页面并重新连接(用户名/密码登录),我想将其保存到数据库。这样,当他们重新登录时,它会保留剩余的时间。
现在的代码:
我用这从SQL(YYYY-MM-DD HH-MM-SS)拉我的DT变量:
$expirationTime = new DateTime();
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$expirationTime = $row['workTimer'];
}
}
$time = strtotime($expirationTime);
$expirationTime = date("Y-m-d H:i:s", $time);
然后我拉current time
:
$currentTime = date('Y-m-d H:i:s');
我对这两个都做了echo
s,它们显示正确。我现在想做的是找出差异。我已经尝试了多种方式来做到这一点,但似乎没有任何工作。最近我做:
$countdown = $currentTime->diff($expirationTime);
$countdown = $countdown->format("Y-m-d H:i:s", $countdown);
与Fatal error: Call to a member function diff() on a non-object in...
错误可能是什么问题?
谢谢!
我已经更新了一些每个评论的建议代码来:
$currentTimeT = date('Y-m-d H:i:s');
$currentTime = strtotime($currentTimeT);
$time = date("Y-m-d H:i:s", $expirationTime);
$expirationTime = strtotime($expirationTime);
$countdown = $currentTime->diff($expirationTime);
$countdown = $countdown->format("Y-m-d H:i:s", $countdown);
echo "C ".$currentTime."<br/> E ".$expirationTime."<br/>D ".$countdown;
同样的错误。
'$ currentTime'是一个字符串,而不是'DateTime'。 – Barmar
看看date_create() – BigScar
在比较它们之前,不要将时间转换为字符串。更新了 – Barmar