javascript时钟将实时转换为秒

时间:2014-01-27 16:02:58

标签: javascript clock

我对javascript相对较新,并一直试图想出一种创建时钟的方法(需要一点解释,请耐心等待):

我正在尝试创建一个时钟跟随实时的javascript时钟,然后计算从午夜开始经过的秒数(此时时钟重置)。然后我希望能够以毫秒为单位定义一秒钟,即改变一秒钟的持续时间。

我的计划是它是一个工作时钟,在24小时内计算200.000“秒”(如果每个“秒”持续0,432秒,这将会发生)。

任何提示?非常感谢所有帮助。

PS。对于那些感兴趣的人我正在做一篇关于时间理论的论文,我认为时钟应该遵循公制,一天应该有20小时,每小时应该持续100分钟,每分钟应该持续100秒。通过这样做,时钟只是一种从午夜到午夜计数到200.000的计时器。

PPS。如果有任何不清楚的地方,我会尝试更深入地解释这一点。

2 个答案:

答案 0 :(得分:2)

您希望setInterval函数可以指定每432毫秒触发一次。

secondTimer = window.setInterval(function () {
    // do stuff in here
},432);

正如其他人所说,这不是最准确的计时器,因此您需要使用Date对象与实际时间同步。

答案 1 :(得分:2)

Javascript中的日期实际上是一个数字,它计算自给定固定日期以来的毫秒数。因此,如果您在Javascript中有任何日期,则可以使用其getTime方法查看该数字。链接中的文档比我在这里的简短描述更深入。

因此,如果您想查看今天,0小时和今天之间已经过了多少秒,那么现在,您可以使用以下代码:

var now = new Date(); // a new Date initialized without parameter defaults to current time

// Initializing with just year, month and day will set the time of the day to 00:00:00
var today = new Date(now.getFullYear(), now.getMonth(), now.getDate());

var milisseconds = now.getTime() - today.getTime();

现在你所要做的就是将milisseconds变量除以1000,你将获得“英制”秒数。从那时起,您可以根据需要转换为“指标”秒。

这将适用于转换......现在,为了让Javascript按给定的时间间隔执行某些操作,您可以使用全局函数setInterval,就像在 Mordred的答案中一样。我在这里引用,但是对他赞不绝口:

timer = setInterval(function () {
    // do stuff in here
}, 432); // 432 is an arbitrary value, this will fire once every 432 milisseconds.

请查看文档for thatfor SetTimeout

正如Matt在问题的评论中所说,Javascript中的定时事件可能并不总是在您设置的时间间隔内准确触发 - 还有其他相关事项,您可以对此进行一些研究 - 所以请检查当前通过初始化新的Date对象来触发事件的时间。请注意:

var x = Date.now();

是:

的简写
var d = new Date();
var x = d.getTime();

在Javascript中使用日期可能对初学者来说有点尴尬...请注意Date对象的某些方法名称和属性可能会产生误导。月份是从0开始的,getDay将返回星期几而不是月份,所以请务必阅读那里的一些文档。除此之外,祝你好运,编码愉快!