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

set javascript time to a specific timestamp

本文关键字:时间戳 javascript time 设置      更新时间:2023-09-26

我需要得到一个统一的javascript时间在我们的私人服务器的所有客户端。所以我想把客户端初始化时的javascript时间设置为服务器的时间。

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

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

与服务器时间相差1-2秒是可以的,但如果可以实现毫秒级的差异,那就更好了。

有什么建议吗?

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

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

现在,服务器时间和客户端时间之间的秒差存储在epochDiff中,您可以使用它进行时间计算。

正如我在我的评论中提到的,这只适用于您的页面不断生成,生成相当快。如果时间可以波动(例如在5-2000ms之间),那么使用XMLHttpRequest()从专用的快速脚本动态获取服务器时间将是更好的主意。