微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JavaScript获取服务器时间的方法详解

本文实例讲述了JavaScript获取服务器时间的方法分享给大家供大家参考,具体如下:

Javascript是运行在客户端的脚本,我们一般都用new Date()来获取当前时间,但是得到的是客户端的时间,客户端时间是随意更改的,如果要做一个产品发布倒计时的话,客户端时间一改,就要闹笑话了。业务中需要用到服务器时间的场景还有很多,那么仅仅通过js怎么拿到服务器时间呢?事实上,只需要一个ajax请求就搞定,通过读取XMLHttpRequest对象的响应头里面的时间戳得到当前服务器时间!

原理就是这么简单:通过ajax向服务器发送请求,当服务器收到请求后即可读取响应头的时间戳了,不管请求成功或失败,都可以拿到时间戳。怎么判断服务器收到请求了呢?当ajax请求发送之后,XMLHttpRequest有5中状态变化:

ottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 0px; widows: 1; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0px; padding-left: 0px; border-spacing: 0px; width: 100%; padding-right: 0px; border-collapse: collapse; font: 14px/19px Verdana,Arial,Helvetica,sans-serif; white-space: normal; letter-spacing: normal; height: 240px; color: rgb(0,0); border-top: silver 1px solid; border-right: silver 1px solid; word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px"> ottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px"> ottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">
ottom: silver 1px solid; border-left: silver 1px solid; padding-bottom: 3px; margin: 0px; padding-left: 3px; padding-right: 3px; border-collapse: collapse; border-top: silver 1px solid; border-right: silver 1px solid; padding-top: 3px">

ottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">XMLHttpRequest.readyState值

ottom: silver 1px solid; border-left: silver 1px solid; padding-bottom: 3px; margin: 0px; padding-left: 3px; padding-right: 3px; border-collapse: collapse; border-top: silver 1px solid; border-right: silver 1px solid; padding-top: 3px">

ottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">表示的意思

ottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">
ottom: silver 1px solid; border-left: silver 1px solid; padding-bottom: 3px; margin: 0px; padding-left: 3px; padding-right: 3px; border-collapse: collapse; border-top: silver 1px solid; border-right: silver 1px solid; padding-top: 3px">0ottom: silver 1px solid; border-left: silver 1px solid; padding-bottom: 3px; margin: 0px; padding-left: 3px; padding-right: 3px; border-collapse: collapse; border-top: silver 1px solid; border-right: silver 1px solid; padding-top: 3px">未初始化,ottom: 0px; line-height: 26px; margin: 0px; padding-left: 0px; padding-right: 0px; font-family: Simsun; color: rgb(68,68,68); font-size: 14px; padding-top: 0px">已经创建一个XMLHttpRequestottom: 0px; line-height: 26px; margin: 0px; padding-left: 0px; padding-right: 0px; font-family: Simsun; color: rgb(68,68); font-size: 14px; padding-top: 0px">对象,但是还没有初始化ottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px"> ottom: silver 1px solid; border-left: silver 1px solid; padding-bottom: 3px; margin: 0px; padding-left: 3px; padding-right: 3px; border-collapse: collapse; border-top: silver 1px solid; border-right: silver 1px solid; padding-top: 3px">1ottom: silver 1px solid; border-left: silver 1px solid; padding-bottom: 3px; margin: 0px; padding-left: 3px; padding-right: 3px; border-collapse: collapse; border-top: silver 1px solid; border-right: silver 1px solid; padding-top: 3px">ottom: 0px; line-height: 26px; margin: 0px; padding-left: 0px; padding-right: 0px; font-family: Simsun; color: rgb(68,68); font-size: 14px; padding-top: 0px">未发送,ottom: 0px; line-height: 26px; margin: 0px; padding-left: 0px; padding-right: 0px; font-family: Simsun; color: rgb(68,68); font-size: 14px; padding-top: 0px">代码已经调用了xmlhttprequest open()方法并且xmlhttprequest已经准备好把一个请求发送到服务器ottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px"> ottom: silver 1px solid; border-left: silver 1px solid; padding-bottom: 3px; margin: 0px; padding-left: 3px; padding-right: 3px; border-collapse: collapse; border-top: silver 1px solid; border-right: silver 1px solid; padding-top: 3px">2ottom: silver 1px solid; border-left: silver 1px solid; padding-bottom: 3px; margin: 0px; padding-left: 3px; padding-right: 3px; border-collapse: collapse; border-top: silver 1px solid; border-right: silver 1px solid; padding-top: 3px">ottom: 0px; line-height: 26px; margin: 0px; padding-left: 0px; padding-right: 0px; font-family: Simsun; color: rgb(68,68); font-size: 14px; padding-top: 0px">已发送,ottom: 0px; line-height: 26px; margin: 0px; padding-left: 0px; padding-right: 0px; font-family: Simsun; color: rgb(68,68); font-size: 14px; padding-top: 0px">已经通过send()方法一个请求发送到服务器端,但是还没有收到一个响应,可以读取响应头信息了ottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px"> ottom: silver 1px solid; border-left: silver 1px solid; padding-bottom: 3px; margin: 0px; padding-left: 3px; padding-right: 3px; border-collapse: collapse; border-top: silver 1px solid; border-right: silver 1px solid; padding-top: 3px">3ottom: silver 1px solid; border-left: silver 1px solid; padding-bottom: 3px; margin: 0px; padding-left: 3px; padding-right: 3px; border-collapse: collapse; border-top: silver 1px solid; border-right: silver 1px solid; padding-top: 3px">ottom: 0px; line-height: 26px; margin: 0px; padding-left: 0px; padding-right: 0px; font-family: Simsun; color: rgb(68,68); font-size: 14px; padding-top: 0px">正在接收,ottom: 0px; line-height: 26px; margin: 0px; padding-left: 0px; padding-right: 0px; font-family: Simsun; color: rgb(68,68); font-size: 14px; padding-top: 0px">已经接收到http响应头部信息,但是消息体部分还没有完全接收完毕ottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px"> ottom: silver 1px solid; border-left: silver 1px solid; padding-bottom: 3px; margin: 0px; padding-left: 3px; padding-right: 3px; border-collapse: collapse; border-top: silver 1px solid; border-right: silver 1px solid; padding-top: 3px">4ottom: silver 1px solid; border-left: silver 1px solid; padding-bottom: 3px; margin: 0px; padding-left: 3px; padding-right: 3px; border-collapse: collapse; border-top: silver 1px solid; border-right: silver 1px solid; padding-top: 3px">ottom: 0px; line-height: 26px; margin: 0px; padding-left: 0px; padding-right: 0px; font-family: Simsun; color: rgb(68,68); font-size: 14px; padding-top: 0px">已加载,ottom: 0px; line-height: 26px; margin: 0px; padding-left: 0px; padding-right: 0px; font-family: Simsun; color: rgb(68,68); font-size: 14px; padding-top: 0px">响应已经被完全接收

通过监听XMLHttpRequest的readystatechange事件来判断当前处于哪种状态,从表中可以看出,当XMLHttpRequest.readyState值为2时就可以读取响应头拿到我们要的时间戳了。代码如下:

rush:js;">

到此,服务器时间就取到了。其实响应头里面的信息不仅仅有时间戳,可以使用xhr.getAllResponseHeaders()来获取整个响应头信息,响应头里面还包括服务器类型及版本号、请求的文件类型及编码等其他信息(见下图一),都可以通过这种方式读取。为了证明获取的确实是服务器时间,我用手机测试了一下(见下图二),当前北京时间是2015年4月20日21:59,PC机时间我调成了2015年2月1日 21:16

图一

图二

更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》、《》及《

希望本文所述对大家JavaScript程序设计有所帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐