将javascript时间设置为特定时间戳

时间:2014-08-21 06:30:40

标签: javascript

我需要为私人服务器中的所有客户端提供统一的javascript时间。所以我想在初始化时将客户端的javascript时间设置为服务器的时间。

现在我正在考虑设置一个setInterval来增加一个带有时间戳的变量,但我认为每隔n毫秒就有一个setInterval在后面运行会太多了。

那么有没有办法让我设置javascript的开始时间?所以new Date的每个实例都将基于此而不是客户端的系统时间?

与服务器时间相差1-2秒即可,但如果可以达到毫秒的差异,那就更好了。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

让服务器输出它的当前时间戳,然后计算客户端时间戳和服务器时间戳之间的差异。

<script>
  var serverEpoch = 1408602887; // written dynamically by the server
  var epochDiff = Math.round(Date.now()/1000)-serverEpoch;
</script>

现在,您可以使用epochDiff中存储的服务器时间和客户端时间(以秒为单位)之间的差异,您可以将其用于时间计算。

正如我在评论中提到的,这仅适用于您的网页生成速度相当快的情况。如果时间可以波动(例如在5-2000ms之间),那么使用XMLHttpRequest()从专用的快速脚本动态获取服务器时间会更好。