我对javascript相对较新,并一直试图想出一种创建时钟的方法(需要一点解释,请耐心等待):
我正在尝试创建一个时钟跟随实时的javascript时钟,然后计算从午夜开始经过的秒数(此时时钟重置)。然后我希望能够以毫秒为单位定义一秒钟,即改变一秒钟的持续时间。
我的计划是它是一个工作时钟,在24小时内计算200.000“秒”(如果每个“秒”持续0,432秒,这将会发生)。
任何提示?非常感谢所有帮助。
PS。对于那些感兴趣的人我正在做一篇关于时间理论的论文,我认为时钟应该遵循公制,一天应该有20小时,每小时应该持续100分钟,每分钟应该持续100秒。通过这样做,时钟只是一种从午夜到午夜计数到200.000的计时器。
PPS。如果有任何不清楚的地方,我会尝试更深入地解释这一点。
答案 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 that和for SetTimeout
。
正如Matt在问题的评论中所说,Javascript中的定时事件可能并不总是在您设置的时间间隔内准确触发 - 还有其他相关事项,您可以对此进行一些研究 - 所以请检查当前通过初始化新的Date
对象来触发事件的时间。请注意:
var x = Date.now();
是:
的简写var d = new Date();
var x = d.getTime();
在Javascript中使用日期可能对初学者来说有点尴尬...请注意Date对象的某些方法名称和属性可能会产生误导。月份是从0开始的,getDay
将返回星期几而不是月份,所以请务必阅读那里的一些文档。除此之外,祝你好运,编码愉快!