首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将javascript倒计时与服务器时间同步

如何将javascript倒计时与服务器时间同步
EN

Stack Overflow用户
提问于 2011-03-19 04:52:02
回答 4查看 42.3K关注 0票数 21

我正在建设一个网站,其中有时间和价格滴答下跌。我最关心的事情是同步时间,这样它在所有客户端上都尽可能准确。

目前,我正在向客户端发送剩余的毫秒数,然后用它来为倒计时计时器提供燃料,但由于传输和渲染延迟,即使在同一台计算机上有两个浏览器,这也可能会关闭几秒钟。

有没有一种方法可以同步客户端的javascript时间和服务器时间,或者我只是必须处理这种轻微的延迟?

如果有一种方法可以准确地测量发送数据的服务器与客户端接收和呈现的数据之间的时间差就好了。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-03-19 05:02:45

即使服务器和客户端的时间不同,时间更改的速率也应该是相同的。我会将剩余时间发送给客户端,然后让客户端将该时间与当前时间相加,然后让客户端根据该时间计算倒计时。例如:

代码语言:javascript
复制
var timeRemaining = [rendered on page load or queried by ajax]; // in milliseconds
var endTime = new Date(new Date().getTime() + timeRemaining);

// Put this in a setInterval, or however you currently handle it
var countdown = (endTime.getTime() - new Date().getTime()) / 1000;
票数 23
EN

Stack Overflow用户

发布于 2012-08-15 03:54:40

有一种方法可以使客户端与服务器的时间同步。我写了一个库来做这件事:ServerDate

以下是自述文件的一部分:

您可以像使用Date函数或其实例一样使用ServerDate,例如:

代码语言:javascript
复制
> ServerDate()
"Mon Aug 13 2012 20:26:34 GMT-0300 (ART)"

> ServerDate.now()
1344900478753

> ServerDate.getMilliseconds()
22

还有一种新方法可以获得ServerDate对服务器时钟的估计精度(以毫秒为单位):

代码语言:javascript
复制
> ServerDate.toLocaleString() + " ± " + ServerDate.getPrecision() + " ms"
"Tue Aug 14 01:01:49 2012 ± 108 ms"

您可以查看服务器时钟和浏览器时钟之间的差异,以毫秒为单位:

代码语言:javascript
复制
> ServerDate - new Date()
39
票数 16
EN

Stack Overflow用户

发布于 2011-03-19 04:56:14

您可以测量完整的服务器往返所用的时间,然后除以2,从而得到一个很好的时间差估计。请注意:不能保证IP包在两个方向上采用相同的路由,但可能性相当高。

如果毫秒分辨率对你来说足够了,你可以使用Date.getTime()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5357719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档