0

我正在使用这个插件进行倒计时。在他的例子中,他正在倒计时澳大利亚日

$(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() 函数让我感到困惑。

4

4 回答 4

2

上面显示的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 在客户端运行并默认使用“本地时间”,因此您需要明确注意时区。您可以使用setUTCsetter 的版本(例如setUTCHours())来做到这一点,但这有点烦人并且需要几行代码。所以你最好的选择是使用 Date 的基于字符串的构造函数:

new Date("November 6, 2012 20:00:00 GMT -5:00")
于 2012-09-20T17:41:07.697 回答
0
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

于 2012-09-20T17:42:45.343 回答
0

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

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

大豆,你可以

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

这样就可以了。

于 2012-09-20T17:45:23.937 回答
0

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

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

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

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

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

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

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

var countdownDate = new Date("November 6, 2012 20:00:00 EST");
于 2012-09-20T17:49:49.717 回答