倒计时到某个日期并添加x小时

时间:2016-04-03 21:35:14

标签: php mysql ajax

计时器主     

    $curDate = date("Y-m-d H:i:s", strtotime("-8 hours"));

    $timecountdownend = strtotime($curDate) + strtotime("+1 hours");
    $timecountdownstart = strtotime("-8 hour");
    $timeleft = $timecountdownend - $timecountdownstart;

    if (isset($_POST['type']) && $_POST['type'] == "timerupdate") {
        echo $timeleft;
    }
?>

计时器更新5秒

$(document).ready(function(){
    var timerText = $("[timer]");

    setInterval(function(){
        $.post("timer.php", {type: "timerupdate"}, function(data){
            timerText.html("Time Left:" + data + " seconds timer.")
        });
    }, 5000);
});

您想要实现的目标是什么?
这个想法是当用户保留一个项目时,将到期日期设置到数据库中,以便保留该项目的USER不能永久保留它。例如:

  

用户A:预约项目A.
  [SERVER] $ database-> insert(" reservation",$ curDate);
  [SERVER] 2016-04-03 16:00:00(此项目过期30分钟后)

那应该发生在后端的事情。

你有什么行为?
我已经完成了大量的谷歌搜索,看看如何在当前日期添加x小时或分钟,并将其传递成为unix时间戳。


您的问题是什么?
每当我尝试上面的代码时,它都能正常工作,但却没有找到我需要的正确输出。具体问题是$timecountdownend = strtotime($curDate) + strtotime("+1 hours");

**新**

date_default_timezone_get("America/New York");

$curDate = date("Y-m-d H:i:s", strtotime("-8 hours"));
$date = new DateTime($curDate);
date_add($date, date_interval_create_from_date_string('2 hour'));

$timecountdownend = strtotime($date->format('Y-m-d H:i:s'));
$timecountdownstart = strtotime("-8 hour");
$timeleft = $timecountdownend - $timecountdownstart;

if (isset($_POST['type']) && $_POST['type'] == "timerupdate") {
    echo $timeleft;
}

输出:7200秒(尽管如此)。这很精确,但它没有倒计时。

1 个答案:

答案 0 :(得分:1)

您考虑过http://php.net/manual/en/datetime.add.php吗?

唯一棘手的部分是了解这种语法是如何工作的:$date->add(new DateInterval('P7Y5M4DT4H3M2S')); P7表示添加7年H3意味着添加3小时

在数据库中保存或更新日期后,请将副本与响应一起发送,并在最终答复文档中输入:

https://jsfiddle.net/o740okn4/5/

您需要从CDN进行这些调用或从git

获取脚本
moment.min.js
moment-duration-format.min.js

https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.12.0/moment.min.jshttps://cdnjs.cloudflare.com/ajax/libs/moment-duration-format/1.3.0/moment-duration-format.min.js