【问题标题】:How to create an advanced countdown timer in JavaScript?如何在 JavaScript 中创建高级倒数计时器?
【发布时间】:2013-03-03 14:13:19
【问题描述】:

我对 JavaScript 有点陌生,但我确实有一些基本的了解。我想创建一个可以接受日期和时间的倒数计时器,但我不确定如何或从哪里开始。

我希望倒数计时器是这样的:http://www.timeanddate.com/clocks/freecountdown.html

那么如何确保它在指定的时区、闰年和 DST 设置内工作?

【问题讨论】:

    标签: javascript timer countdown gmt


    【解决方案1】:

    欢迎来到 Stackoverflow!

    我不会透露所有内容,但如果您希望时间明确正确(即使客户的计算机设置为错误的日期),您必须使用TimeAPI 之类的内容。

    如果您想确保它在指定的timezone、闰年等情况下工作,Date 对象应该可以解决问题:

    var x = new Date();
    var currentTimeZoneOffsetInHours = x.getTimezoneOffset() / 60;
    

    处理夏令时,比较复杂,但一般的共识就是使用UTC method of the Date object

     var d=Date.UTC(2012,02,30);
    

    这将确保您没有跨越任何时区界限。 SO上有几个类似这个问题的问题,请随意搜索。

    【讨论】:

    • 感谢您的意见,我会环顾四周,看看我能想出什么,我已经看到了一些脚本,但需要查看它们并尝试了解它们的工作原理。一旦我有事情发生,我会回来发布更新。
    【解决方案2】:

    坦率地说,你需要更多地学习 javascript。

    退房:

    基本上,您可以使用函数设置日期的各个时间部分。然后计算当前日期和所需结束日期之间的差值(获取毫秒差值,然后计算一个时间字符串以显示剩余时间)。

    一旦您生成了一些实际代码,请用它更新您的问题,我们或许可以为您提供更多帮助。

    【讨论】:

      【解决方案3】:

      这不是很先进,但它是一个好的开始。 示例将打印距离 2015 年还有多少天、多少小时和多少分钟。

      // NewYearCalculator
      // Written by Riku Viitanen
      // 2014
      
      today = new Date();
      
      BigDay = new Date("1, 1, 2015");
      msPerDay = 24 * 60 * 60 * 1000 ;
      timeLeft = (BigDay.getTime() - today.getTime());
      e_daysLeft = timeLeft / msPerDay;
      daysLeft = Math.floor(e_daysLeft);
      e_hrsLeft = (e_daysLeft - daysLeft)*24;
      hrsLeft = Math.floor(e_hrsLeft);
      minsLeft = Math.floor((e_hrsLeft - hrsLeft)*60);
      
      document.write("Only  " + daysLeft + " days,  " + hrsLeft +" hours and " + minsLeft + " minutes left to year 2015!");
      

      对不起,我的英语不好,如果是:3

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-10
        相关资源
        最近更新 更多