autojs时间同步

JavaScript012

autojs时间同步,第1张

牙叔教程 简单易学

8.7.7-0

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

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

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

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

那么, 这个误差怎么算呢

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

会产生一个手机时刻A

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

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

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

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

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

部分内容来自网络

有时用js来获取服务器时间。一般会用System.DateTime

方法如下:

复制代码

代码如下:

<script

language="javascript">

var

a

=

new

Date()

a

=

<%=System.DateTime.Now.ToString("yyyy-MM-dd

HH:mm:ss")%>

Response.Write(a)

</script>

其实还有一个方法:利用javascript的“runat="server”属性

代码

复制代码

代码如下:

<script

runat="server"

language="javascript">

var

a

=

new

Date()

a

=a.getFullYear()+

"-"+(a.getMonth()+1)+"-"+a.getDate()+"

"+a.getHours()+":"+a.getMinutes()

Response.Write(a)

</script>

助人等于自助!

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

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

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