js setHours - 倒计时参数格式

时间:2012-07-16 16:29:17

标签: jquery time countdown

我正在尝试修改脚本以每5分钟运行一次倒计时。目前,getCountDown()函数设置为每12小时倒计时一次。我似乎无法弄清楚如何修改这个时间格式,每隔5分钟倒数一次。 我需要改变的功能就在这里

function getCountDown() {
var until = getGMT();
until.setHours(until.getHours() < 12 ? 12 : 24, 0, 0, 0); // Next midday or midnight
return until;

function getGMT() {
var now = new Date();
now.setMinutes(now.getMinutes() + now.getTimezoneOffset() - 0 * 60); // GMT is UTC-0
return now;

}

我的技能非常有限,所以任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:1)

注意:这个答案旨在指导海报解决方案并更好地理解JS,而不是提供解决方案。

当前代码的工作方式是首先获取日期对象,然后将该对象的时间设置为24:00(下午午夜)或12:00(下午中午)。它通过检查当前小时值是什么来实现这一点(&lt; 12表示下一个中午,下一个午夜是下午)。然后它返回新修改的日期对象,显示我假定倒计时设计为运行的日期。

问题的核心是你需要返回一个不同的日期对象,这意味着你想要将分钟设置为你选择的东西(以及秒和毫秒为0)。

对于您想要做的事情,您可能希望使用Date对象上的getMinutes和setMinutes函数来检查当前日期,然后设置适当的分钟(以及秒和毫秒值)。当然,如果您当前的时间是01:59,那么您可能需要更改小时数给02:00,这样您实际上仍然可以使用setHours(因为这可以让您设置小时和分钟)。

要计算出你的新分钟值,你希望能做些什么。你需要四舍五入到最接近的5并适当处理上面提到的情况,你需要四舍五入。

有关上述方法的文档可以在msdn网站上找到:

编辑以添加一些代码

var hours = until.getHours();
var minutes = until.getMinutes();
var targetMinutes = Math.ceil((minutes+1)/5)*5;
if (targetMinutes==60)
{
    targetMinutes = 0;
    hours = hours+1;
}

until.setHours(hours, targetMinutes, 0, 0);

您可能能够更有效地编写上述内容,并且您可能需要检查它在边界周围的功能,如午夜也适当(它似乎可以工作,但您应该始终彻底测试代码)。希望你能理解它的作用。 :)