【问题标题】:JavaScript Countdown TimeJavaScript 倒计时
【发布时间】:2012-09-20 17:36:24
【问题描述】:

我正在使用this plugin 进行倒计时。在他的例子中,他正在倒计时澳大利亚日

$(function () {
  var countdownDate = new Date();
  countdownDate = new Date(countdownDate.getFullYear() + 1, 1 - 1, 26);
  $('#countdown').countdown({until: countdownDate});
  $('#year').text(countdownDate.getFullYear());
});

我需要它倒计时到 2012 年 11 月 6 日星期二美国东部标准时间晚上 8 点,但我不确定如何自定义它。 Date() 函数让我感到困惑。

【问题讨论】:

    标签: javascript jquery date time countdown


    【解决方案1】:

    上面显示的Date 构造函数的格式为new Date(Year, Month, Day)。但是,请记住,Month 参数是 0 索引的。这意味着一月是0,而不是1。因此,要倒计时到 2012 年 11 月 6 日,您需要这样构建日期:

    countdownDate = new Date(2012, 10, 6);
    

    你也可以考虑这样做:

    countdownDate = new Date(2012, 11-1, 6);
    

    这与示例显示的相似。但这只是不必要地减慢速度,以便更清楚地了解您所指的月份。

    此外,如果您构造一个不带参数的Date 对象,它会为您提供当前日期。所以new Date() 给你一个相当于“现在”的日期对象。在示例中,他们使用它来使用(有效地)(new Date()).getFullYear() 获取当前年份。然后他们将其加一并将其传递给新的Date 构造函数,以便获得“下一个”澳大利亚日之前的时间。

    需要注意的是,澳大利亚国庆日的例子实际上有一个错误。如果现在是一月,那么这一年将不必要地增加,倒计时将显示直到下一年的澳大利亚日的时间。所以在这个例子中,倒计时永远不会低于 26 天。哎呀。 :-)

    更新:

    要么你的问题得到了更新,要么我第一次错过了这个。看起来您想在美国东部标准时间晚上 8 点结束。使用数字日期构造函数实际上非常棘手。由于 JavaScript 在客户端运行并默认使用“本地时间”,因此您需要明确注意时区。您可以使用setUTC 版本的setter(例如setUTCHours())来做到这一点,但这有点烦人并且需要几行代码。所以最好的办法是使用 Date 的基于字符串的构造函数:

    new Date("November 6, 2012 20:00:00 GMT -5:00")
    

    【讨论】:

    • 不要忘记 UTC 偏移量,他想要它在 EST 中。
    【解决方案2】:

    您想要使用的 Date() 构造函数调用将是以下之一:

    new Date(dateString)
    new Date(year, month, day, hours, minutes, seconds, milliseconds)
    

    黄豆,你可以的

    new Date("November 6, 2012 20:00:00 GMT -5:00")
    

    这样就可以了。

    【讨论】:

      【解决方案3】:
      countdownDate = new Date(2012, 10, 6, 20, 0, 0, 0);
      

      countdownDate = new Date("11/6/2012 8:00 PM")
      

      https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date

      【讨论】:

        【解决方案4】:

        这些行确定倒计时的日期:

        var countdownDate = new Date();
        countdownDate = new Date(countdownDate.getFullYear() + 1, 1 - 1, 26);
        

        这里的第一行创建了一个新的 JavaScript 日期对象。创建日期时默认为现在。

        下一行使用结构将日期设置为特定时间点:

        new Date(year, month, day, hours, minutes, seconds, milliseconds);
        

        我会一步一步来: 1. YearcountdownDate.getFullYear()得到当前年份,加一个为明年 2. 1 - 1 = 0,所以这是选择第一个月(一月) 3. 26 是特定月份的第 26 天

        要解决此问题,您可以使用字符串表示法将这两行替换为一行:

        var countdownDate = new Date("November 6, 2012 20:00:00 EST");
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-05-08
          • 1970-01-01
          • 1970-01-01
          • 2019-02-17
          • 2013-03-17
          • 2011-12-08
          • 2011-06-14
          相关资源
          最近更新 更多