2012-07-16 80 views
1

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

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; 

}

我的js技能是非常有限的,因此任何帮助,将不胜感激。

+0

getGMT看起来像什么? '直到'有什么属性?我们还需要查看该代码。 – ajm 2012-07-16 16:49:24

+0

你只是需要JavaScript还是你现在知道使用什么算法?你是否理解你粘贴的代码,以及它是如何工作的,或者是你不了解当前功能的问题,因此无法将其改为现在所需? – Chris 2012-07-16 16:50:27

+0

确定getGMT函数是在上面添加的。是的,问题是我不明白当前的功能,所以我可以找出如何改变它。 – perfectday 2012-07-16 16:50:37

回答

1

注意:这个答案旨在引导海报到解决方案和JS的更好的理解,而不是给解决方案。

当前代码的工作方式是首先获取日期对象,然后将该对象的时间设置为24:00(下午午夜)或12:00(下午中午)。它通过检查当前小时值是什么时间来解决这个问题(< 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); 

你也许能够更有效地写上面的一点,你可能需要检查它做什么边界周围像午夜正确太(它似乎工作,但你应该始终测试代码彻底)。希望你能理解它到底是什么。 :)

+0

感谢您的帮助。我会把它拿走,并尝试自己解决。非常感谢您的建议。如果我解决了问题,我会发布答案。 – perfectday 2012-07-16 17:03:52

+0

如果您有任何问题或无法解决问题,我愿意尝试敲定一个快速解决方案。我总是希望通过指出人们朝着正确的方向回答这些更一般的问题,而不是仅仅给出复制/粘贴的答案。 :)(如果有帮助,请随时+1我的答案)。 – Chris 2012-07-16 17:10:59

+0

是的,我明白 - 让我尝试自己的好多了。我希望能够弄清楚,但说实话我很困惑。 – perfectday 2012-07-16 17:14:00