【问题标题】:PHP countdown timer using 'd-m-Y H:i:s' timestampPHP 倒数计时器使用 'd-m-Y H:i:s' 时间戳
【发布时间】:2016-01-29 14:37:54
【问题描述】:

我正在尝试创建一个计时器,从时间戳开始 1 小时显示倒计时,然后显示表单按钮,但我无法让它工作,我尝试了多种我在网上找到的方法,但它们要么显示时间不对,或者从不显示表格。这是我目前所拥有的:

while($row2 = $result2->fetch_assoc()) {
$timestamp = $row2['timestamp'];
$work_id = $row2['work_id'];
$current_time = date("Y-m-d H:i:s"); 
$ready_time = date("Y-m-d H:i:s", strtotime($timestamp)+3600);
if($current_time > $ready_time){?>
<form action="" method="POST" onsubmit="return confirm('Are you sure?');">
    <input type="hidden" value="<?echo $work_id;?>" name="work_id">
    <input type="submit" name="submit" value="Complete Workorder">
</form>
?
}else{
$time1 = new DateTime($current_time);
$time2 = new DateTime($timestamp);
$interval = $time1->diff($time2);

echo $interval->d ." Days ". $interval->h . " Hours, " . $interval->i." Mintues, ".$interval->s." seconds"; 
}
}

【问题讨论】:

  • 这段代码没有按预期工作的具体情况如何?
  • 我永远无法获得一个倒计时计时器来倒计时,不必实时显示页面刷新的剩余时间。至于 $current_time > $ready_time 似乎反向工作,我不明白为什么,当时间应该已经过期(1小时后)它仍然不显示表单并始终显示我的 echo Workorder 待处理
  • mysql 中的日期/时间值始终采用yyyy-mm-dd hh:mm:ss 格式,例如Y-m-d H:i:s。如果它以 d-m-Y 格式从 mysql 中出来,那么要么通过date_format() 明确请求它,要么它们是 varchar/text 值,而不是日期时间。而且我在那里看不到任何“计时器”代码。你只是从 mysql 中吸取一些东西并生成一个表格。
  • 我已经更新了我的代码,我发布了一个旧副本,我的错误。但是计时器总是显示 0 天 0 小时、0 分钟、0 秒和米奇,你是对的,我希望它是实时的,但我不是很好的 javascript

标签: php date timer timestamp countdown


【解决方案1】:

你可以计算你的sql中剩下的时间:

SELECT work_id, TIMESTAMPDIFF(SECOND,CURRENT_TIMESTAMP(),`timestamp`) AS timeleft 
FROM tablename

然后检查你的 php 中的值:

$timeleft = $row2['timeleft'];
$work_id = $row2['work_id'];

if($timeleft >=0): ?>
    <form action="" method="POST" onsubmit="return confirm('Are you sure?');">
        <input type="hidden" value="<?echo $work_id;?>" name="work_id">
        <input type="submit" name="submit" value="Complete Workorder">
    </form>
<?php else: ?>
    <p>You need to wait <?php echo $timeleft;?> seconds</p>
<?php endif;

如果您想在不刷新的情况下实际更新倒计时,则需要使用 javascript 代替 &lt;p&gt;You need to wait &lt;?php echo $timeleft;?&gt; seconds&lt;/p&gt;

【讨论】:

  • 谢谢,剩余时间是递增而不是递减,我如何指定所需的等待时间。
  • 我不关注,上面的代码会输出类似You need to wait 3600 seconds的东西。如果您在 10 秒后再次刷新页面,它将显示为 You need to wait 3590 seconds。你有什么问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-24
  • 2019-03-22
  • 1970-01-01
  • 2013-05-12
相关资源
最近更新 更多