如何从服务器获取日期和时间并将其用作客户端?

时间:2016-08-06 00:50:38

标签: javascript api datetime

这不是一个重复的问题。如果您有疑问,请将其读到最后。

问题:我正在创建一个在SmartTV浏览器中显示的网页,我不能依赖或信任该设备的时钟。时间总是错误的,没有日期注册表。

解决方案:我使用ajax从时间服务器API获取我的位置的当前日期和时间。它发回年,月,周日,月,日,小时和分钟。 我不关心确切的秒数。

如何:我不知道该怎么做才能获取这些信息,并将其转换为一个工作时钟,当时间和日期上升时,它会在浏览器中刷新。我每小时都会获取一次时间服务器以确保它仍然保持同步,但是在这一小时之间,我如何才能使JavaScript正确计算分钟,小时,天,月和年?

1 个答案:

答案 0 :(得分:4)

选项1:使用setInterval()。例如:

var numElapsedSeconds = 0;
setInterval(function() {
    numElapsedSeconds++;
}, 1000);

然后将numElapsedSeconds添加到您从服务器收到的最后一个时间戳,并且您有一个(或多或少)可靠的当前时间。

选项2:当您从服务器获得更新时,还要检查本地时钟,计算增量,然后从该点开始使用delta与本地时钟来获得" real"时间。即使本地时间设置错误,我也假设时间仍然以与服务器上相同的速度进行(可能除非用户突然调整它)。不确定你的用例是什么,但这可能足够可靠......

你也可以将这两个选项结合起来以获得最大的准确度(以补偿每隔1000毫秒不被称为正好的间隔)。