【问题标题】:PHP Generated date -> Javascript countdownPHP 生成日期 -> Javascript 倒计时
【发布时间】:2013-05-21 17:04:02
【问题描述】:

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

  1. php 脚本,输出可以存储在数据库中的日期。
  2. Javascript 倒计时到该日期。如果它完成了,我想显示一个超链接(简单的 HTML 锚)。

第 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锚链接)

【问题讨论】:

  • 只是一个小费人。我确实喜欢荷兰语,即使对它一无所知。但是 SO 是全球 QA 站点,所以来自全世界的人都可以进入这里,所以 必须 用英文写作。此外,如果您将代码(vars、cmets 等)翻译成英文,甚至只是在这里发布,它会更好,因为它有助于人们理解它。

标签: php javascript date countdown countdowntimer


【解决方案1】:

您误用了 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 的间隔调用自身。但是在调用间隔之前,您必须比较您当前的日期(倒计时)是否等于另一个日期(您未在文本中指定)以停止它并显示您的超链接。

祝你好运。

【讨论】:

  • 嘿,感谢您的反应!我使用了 George 的 jsFiddle 形式,因为它更清晰。我很欣赏你的意见!我只剩下一个问题:如何使用那个 window.setTimeout?我不知道如何使用它。你能给我做个小提琴吗?对我来说,插入代码比插入文本要容易得多。
  • 乔治回答中的setInterval 也可以。只需将其设置为像这样的变量 var interval = setInterval 因此,当倒计时结束时,您只需停止间隔 clearInterval(interval)
  • 还有一个问题:倒计时没有停止!我有这个小提琴:jsfiddle.net/Trooper_X/MB2jB。你能帮我看看吗?我还是不明白,为什么它不起作用:/
  • 将停止间隔的条件更改为此if (dag == 0 && uur == 0 && min == 0 && sec == 0) {
  • 谢谢!对此,我真的非常感激!现在一切都很好! PHP 将限制该功能,使其无法在日期后倒计时。很大的帮助!谢谢!
【解决方案2】:

看看这个jsFiddle。几个问题:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-24
    • 1970-01-01
    • 1970-01-01
    • 2020-09-04
    • 1970-01-01
    相关资源
    最近更新 更多