【问题标题】:updating a Date object on the client side after getting the correct Date from the server side从服务器端获取正确的日期后更新客户端的日期对象
【发布时间】:2013-10-15 03:46:17
【问题描述】:

我的 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 秒会调用一次服务器,如果我希望我的时钟更频繁地更改,那么这会变得非常糟糕。

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

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

谢谢

【问题讨论】:

    标签: javascript timestamp utc


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2018-10-05
      • 1970-01-01
      • 2018-02-03
      • 2015-07-20
      • 1970-01-01
      • 1970-01-01
      • 2013-04-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多