JavaScript NTP时间

我正在写一个计数脚本,它计算旧日期和今天之间的时间。 一切顺利,直到我在错误的日期的计算机上测试并看到结果。 所以我找到了一种通过http://json-time.appspot.com/time.json获取NTP时间的方法。 问题是我需要每毫秒的当前时间,因为我想要计算毫秒但是每隔几毫秒就不可能向NTP服务器发送请求。 这是一些示例代码,用于查看我正在撰写的内容
            var today;
        $(document).ready(function(){

            $.data = function(success){
                $.get("http://json-time.appspot.com/time.json?callback=?", function(response){
                    success(new Date(response.datetime));
                }, "json");
            };
        });

        function update(){
            var start = new Date("March 25, 2011 17:00:00");
            //var today = new Date();
            $.data(function(time){
                today = time;
            });
            var bla = today.getTime() - start.getTime();
            $("#milliseconds").text(bla);
        }

        setInterval("update()", 1);
    
已邀请:
首先,JS调度程序具有一定的粒度 - 也就是说,您可以请求小于20毫秒的间隔,但它不会立即触发 - 您可以看到的是每20毫秒触发的20个事件。 其次,即使你可以,这也不是一个好主意:你将每秒从每台使用此脚本的计算机发出1000个请求。即使客户端及其连接可以处理这个问题,它也就是JSON服务器的DDoS。 你能做的是: 从JSON-NTP获得时间(一次),这将是一个日期 得到当地时间(一次),这将是一个日期 计算NTP和本地时间(一次)之间的差异,这可能是本地时间关闭的毫秒数 对于每次计算,考虑差异     
把它放在你文档的顶部:
var clientTime = new Date();
这就在你的文件底部:
var serverTime = new Date("<have the server put here its current date/time along its timezone>");
var deltaTime = serverTime - clientTime; // in milliseconds (expected accuracy: < 1 second)
那么,如果你需要知道某事的持续时间:
var startTime = new Date();

// [processing...]

var endTime = new Date();
var duration = endTime - startTime; // in milliseconds
var startTimeServer = startTime + deltaTime;
var endTimeServer = endTime + deltaTime;
    
我不确定您是否了解NTP的用途:即计算机内部时钟的同步,而不是用于时钟本身。 我建议你连接到NTP服务一次,以获得客户端内部时间的差异,并使用它来纠正它以便显示。但我不确定,为什么与客户端计算机时间的比较还不够。     

要回复问题请先登录注册