PHP生成日期 - > Javascript倒计时

时间:2013-05-21 17:04:02

标签: php javascript date countdown countdowntimer

我正在为我的信息学项目建立一个网站。为此,我想做:

  1. php脚本,输出可以存储在数据库中的日期。
  2. Javascript倒数到那个日期。如果它完成了我想显示一个超链接(简单的HTML锚点)。
  3. 第1项已经完成,但我很难实现第2项。到目前为止,我们只学习了HTML,MySQL和PHP。所以我现在正在学习Javascript。本网站上的所有示例都难以理解,必须有一种更简单的方法。我想了解代码。

    PHP(无需编辑):

    function Klaar_Bouw($getal=0) {
          $nu = strtotime("now");
          $dag = floor($getal / 86400);
          $uur  = floor(($getal % 86400) / 3600);
          $min = floor(($getal % 3600) / 60);
          $sec = ($getal % 60);
          $nieuw = date('d-m-Y H:i:s', mktime(
          date('H',$nu)+$uur,
          date('i',$nu)+$min,
          date('s',$nu)+$sec,
          date('m',$nu),
          date('d',$nu)+$dag,
          date('Y',$nu))
          );
          return $nieuw;
                  }
    $bouwklaar = Klaar_Bouw( -! random number in seconds !-);
    echo"$bouwklaar";
    

    使用Javascript:

    function Bouwen(BouwKlaar) {
        var bouwtijd = new Date(BouwKlaar);
    
        var dag = (getUTCDay(bouwtijd) - getUTCDay());
        var uur = (getUTCHours(bouwtijd) - getUTCHours());
        var min = (getUTCMinutes(bouwtijd) - getUTCMinutes());
        var sec = (getUTCSeconds(bouwtijd) - getUTCSeconds());
    
        return dag + ":" + uur + ":" + min + ":" + sec;
    }
    
    setInterval(function () {
        var bouw = Bouwen('2013, 05, 21, 20, 00, 00');
        document.getElementById("datum").innerHTML = bouw;
    }, 500);
    

    输出格式:    dd:hh:mm:ss(倒计时为0,然后输出HTML锚链接)

2 个答案:

答案 0 :(得分:2)

您滥用Date对象。尝试使用这样:

function Bouwen(year, month, day, hour, minute, second) {
    var bouwtijd = new Date(year, (month - 1), day, hour, minute, second);

当然:

var bouw = Bouwen(2013, 5, 21, 20, 0, 0);

如果您的倒计时每秒刷新,则您的间隔不需要以500毫秒的频率运行。因此,每秒使用window.setTimeout('targetFunction()', 1000)。此外,它会在同一时间打印,因为您没有更改它。 要更改它,你必须设置你的功能,以秒为单位减少1来调用自身。但是在调用间隔之前,你必须比较你当前的日期(倒计时)是否等于另一个日期(你没有在你的文字中指定)来停止并显示你的超链接。

祝你好运。

答案 1 :(得分:0)

看看这个jsFiddle。几个问题:

  • 您错误地使用了new Date功能。此函数接收几个整数输入,而不是格式化的字符串。
  • 注意如何计算天数,分钟数,小时数和秒数。您应该先删除日期,然后从getUTC函数中检索结果。