js如何取得服务器时间

JavaScript016

js如何取得服务器时间,第1张

正如楼上所说的,js只能操作客户端的东西。在客户端时刻显示并更新服务器的时间应该是不可能的,因为会由于网络延迟的因素使得时间不精确。

打个比方,可以使用ajax每秒钟获取服务器的时间,然后再显示出来,但是可能这个用户的网络延迟比较厉害,他请求的这个时间过了两三秒才返回给客户端,那这样更新时间就不精确了。

也可以这样,第一次从服务器那里获取时间,然后再客户端用js,每秒累加数,就是以获取服务器的那个时间为起掉,用客户端代码每秒累加这个时间

牙叔教程 简单易学

8.7.7-0

手机和服务器时间尽可能一致

手机一般默认设置 使用网络提供的时间

这个时间和服务器的时间一定是有误差的

我们还要把这个误差考虑进去

那么, 这个误差怎么算呢

当手机向服务器查询一次当前时间,

会产生一个手机时刻A

服务器会返回一个服务器时间

服务器时间 - 网络从手机到服务器的时长 = 手机时刻B(以服务器为标准)

手机时间误差 = 手机时刻B - 手机时刻A

用脚本引擎启动一个单独的脚本, 每隔一定时间, 去校正一下两个值, 并且用本地存储存起来

每当要获取服务器的时间, 我们就可以读取本地存储, 直接用公式计算出服务器的时间, 而不用去请求服务器

参考代码如下:

<SCRIPT LANGUAGE = "JavaScript">

var xmlhttp = new ActiveXObject("MSXML2.XMLHTTP.3.0")

xmlhttp.open("GET", "http://bjtime.cn", false)

xmlhttp.setRequestHeader("If-Modified-Since", "bjtime")

xmlhttp.send()

var dateStr = xmlhttp.getResponseHeader("Date")

var date = new Date(dateStr)

var year = date.getFullYear()

var month = date.getMonth() + 1

var date1 = date.getDate()

var hour = date.getHours()

var minutes = date.getMinutes()

var second = date.getSeconds()

alert(date + "  |  " + year + "年" + month + "月" + date1 + "日" + hour + "时" + minutes + "分" + second + "秒")

</SCRIPT>