首先关闭 - 我使用MySQLi Procedural
方法MySQL
通过PHP
我正在尝试创建一种方法,单击按钮来设置"计时器"。根据我的理解,最好的方法(动态计时器 - IE:点击5分钟)是计算time()
距离现在和#34; 5分钟的距离。
如果用户断开与页面的连接并重新连接(用户名/密码登录),我想将其保存到数据库中。这样,当他们重新登录时,它会保留剩余时间。
现在代码:
我用它来从SQL中取出我的DT变量(YYYY-MM-DD HH-MM-SS):
$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
,并且它们正确显示。我现在要做的就是找出差异。我尝试了多种方法,但似乎没有任何效果。最近我做了:
$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;
相同的错误。
答案 0 :(得分:0)
这可能是最不优雅的解决方案,但你可以将你的时间字符串切换为“d,m,y,h,i,s” - 子串并将它们提供给http://php.net/manual/de/function.mktime.php。然后计算时间戳的差异。
答案 1 :(得分:0)
date_diff - 返回两个 DateTime对象
之间的差异并且您将非对象传递给函数diff()
请参阅此PHP manual
我解决了你的问题,试一试:
$time = "2016-09-1 04:45:54";
$time = strtotime($time);
$currentTime = new DateTime(date('Y-m-d H:i:s'));
$expirationTime = new DateTime(date("Y-m-d H:i:s",$time));
$countdown = $currentTime->diff($expirationTime);
$countdown1 = $countdown->format("%H:%I:%S");
print_r($countdown1);die;