从服务器端获取正确的日期后,在客户端更新Date对象

时间:2013-10-08 09:31:06

标签: javascript timestamp utc

我的UI需要始终更新UTC时间才能显示给用户。

我的原始代码是:

(function () {
    $http.get('api/getdate').success(function (data) {
        current = new Date(data.res + new Date().getTimezoneOffset()*60*1000);
        updateDateTimer = setInterval(function(){
            $http.get('api/getdate').success(function (data) {
                current = new Date(data.res + new Date().getTimezoneOffset()*60*1000);
            });
        }, 30000);
    });
})();

data.res具有我需要的正确时间戳。这种方式工作正常,因为我可以信任我的服务器与发送回UI的数据。那么我需要用户的唯一数据是它与UTC的偏差,因此我确信将显示的日期是正确的。

我的问题是每隔30秒就会调用一次服务器,如果我希望我的时钟更频繁地改变,那么这可能会变得非常讨厌。

我想过只调用一次服务器,然后用一个定时器添加1秒到创建的Date对象,但是这非常不准确,几分钟后你就会看到时钟不再同步了与实时。

有没有可能在第一次之后没有多次调用服务器? 问题是我无法确保客户端不会更改其本地时钟。似乎我需要一些如何处理使用第一个.get调用创建的Date对象,但是如何处理?

感谢

1 个答案:

答案 0 :(得分:0)

请您澄清一下这个问题?如果您要做的唯一事情是查找/显示当前 UTC时间,则新的Date()。getTime()将返回自1970年1月1日UTC以来的毫秒数,以便时间已经是UTC时间(在纽约和洛杉矶同时发生的2次getTime()调用将显示相同的数字)。然后你在Date对象上有一些UTC函数给你UTC时间,比如getUTCHours(),getUTCMinutes和getUTCSeconds()。