jquery - 设置间隔秒数比本地时间秒数快

标签 jquery

我用jquery制作了一个时钟。这很好。现在我注意到,时间与我的实际系统时间不同,而我的时钟启动时它很好。如果我的时钟运行很长时间,我会得到系统时间的变化。

我的功能是:

$(document).ready(function(){

                var paper = new Raphael(document.getElementById('USClock'),500,500);

                var secondHand = paper.path('m 250,250, l 0 -200');
                var minuteHand = paper.path('m 250,250, l 0 -200');
                var hourHand = paper.path('m 250,250, l 0 -150')
                minuteHand.attr({'stroke':"#f00",'stroke-width':5});
                hourHand.attr({'stroke':"#0ff",'stroke-width':10})

                 var myDate = new Date();
                 var actualSeconds = myDate.getSeconds();
                 var actualMinutes = myDate.getMinutes();
                 var actualHours = myDate.getHours();
               // 

               var currentSecondDeg = actualSeconds*6;
               var currentMinuteDeg = actualMinutes*6;
               var currentHourDeg  =  actualHours*30 + ((actualMinutes)*0.5);

               var num = currentSecondDeg;

               secondHand.rotate(currentSecondDeg,250,250);
               minuteHand.rotate(currentMinuteDeg,250,250);
               hourHand.rotate(currentHourDeg,250,250);

               var update = function(){
                    num +=6;
                    currentSecondDeg = num;
                    secondHand.rotate(currentSecondDeg,250,250);
                    if(( currentSecondDeg % 360) == 0){
                        num = 0;
                        currentMinuteDeg +=6;

                        minuteHand.rotate(currentMinuteDeg,250,250);

                        currentHourDeg += 0.5; // 360/12 = 30deg per hour so per min 30/60 = 0.5

                        hourHand.rotate(currentHourDeg,250,250);

                        if(currentMinuteDeg == 360){
                            currentMinuteDeg = 0;
                        }

                        if(currentHourDeg == 360){
                            currentHourDeg = 0;
                        }
                    }
                    //$('p').html('SecondsDeg'+(currentSecondDeg)+'<br> currentMinuteDeg'+currentMinuteDeg+'<br>currentHourDeg'+currentHourDeg);
               }
               var myInterval = setInterval(update,1000);
            })

实际上我的问题是为什么设置的间隔与长时间的过程不同。如果有人发现我的职能存在问题或错误的工作方法,请告诉我。另外,如果有人知道一种好方法,我们将不胜感激。

提前致谢!有什么方法可以解决这个问题,否则我如何在我的网站上显示 4 个不同的时钟?从服务器获取时间的唯一方法?

最佳答案

setInterval()(以及 setTimeout())可能会受到处理器速度、浏览器 JavaScript 实现速度以及加载到处理器上。它们绝不与系统时钟对齐。

阅读this page了解更多信息。

关于jquery - 设置间隔秒数比本地时间秒数快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8182008/

相关文章:

jquery - 使用 translate3d 和 jQuery 延迟检测碰撞

javascript - 如何让这个 jQuery 文本消失?

javascript - 使用jquery和ajax删除记录

javascript - jQuery slideDown 与 jQuery UI .show ('slide' )

c# - 并非所有参数都在 jquery ajax 调用中发送

jquery - 通过最后两个字符定位元素

javascript - 如何使用ajax分页获取数据?

c# - 使用 $.ajax (jquery) 将数组发布到 Web 服务

javascript - 如何检测 load() 加载的元素是否已完成加载?

javascript - BootStrap Django Jquery Modal 未关闭 Ajax 调用提交