JavaScript怎么获取服务器时间 JavaScript服务器时间获取方法

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

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

XMLHttpRequest.readyState值 表示的意思
0 未初始化,已经创建一个XMLHttpRequest对象,但是还没有初始化
1 未发送,代码已经调用了xmlhttprequest open()方法并且xmlhttprequest已经准备好把一个请求发送到服务器
2 已发送,已经通过send()方法把一个请求发送到服务器端,但是还没有收到一个响应,可以读取响应头信息了
3 正在接收,已经接收到http响应头部信息,但是消息体部分还没有完全接收完毕
4 已加载,响应已经被完全接收

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

<p id="time"></p> <script> ajax()  function ajax(option){  var xhr = null;  if(window.XMLHttpRequest){   xhr = new window.XMLHttpRequest();  }else{ // ie   xhr = new ActiveObject("Microsoft")  }  // 通过get的方式请求当前文件  xhr.open("get","/");  xhr.send(null);  // 监听请求状态变化  xhr.onreadystatechange = function(){   var time = null,    curDate = null;   if(xhr.readyState===2){   // 获取响应头里的时间戳   time = xhr.getResponseHeader("Date");   console.log(xhr.getAllResponseHeaders())   curDate = new Date(time);   document.getElementById("time").innerHTML = "服务器时间是:"+curDate.getFullYear()+"-"+(curDate.getMonth()+1)+"-"+curDate.getDate()+" "+curDate.getHours()+":"+curDate.getMinutes()+":"+curDate.getSeconds();   }  }  } </script>

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

图一

图二

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索javascript
, 服务器
, xmlhttprequest
, new
, null
时间
javascript获取时间戳、javascript 获取时间、js获取服务器时间、获取服务器时间、c 获取服务器时间,以便于您获取更多的相关知识。

时间: 2024-09-19 13:41:22

JavaScript怎么获取服务器时间 JavaScript服务器时间获取方法的相关文章

Javascript实现商品秒杀倒计时(时间与服务器时间同步)_javascript技巧

现在有很多网站都在做秒杀商品,而这其中有一个很重要的环节就是倒计时. 关于倒计时,有下面几点需要注意: 1.应该使用服务器时间而不是本地时间(本地时间存在时区不同.用户自行设置等问题). 2.要考虑网络传输的耗时. 3.获取时间时可直接从AJAX的响应头中读取(通过getResponseHeader('Date')来获得),服务器端不需要专门写时间生成脚本. 过程分析: 1.从服务器读到一个时间戳之后便开始计时,不考虑网络传输的耗时: 图中的各项标注分别是(上面的时间线采用标准时间,与服务器和页

ASP+JS获取并实时显示服务器时间的代码

asp+|js|服务器|显示 第一种代码: <html><head> <script language=javascript type="text/javascript"> //特别注明:北京时间是格林尼治标准时加八小时,因此用的起始时间也是从八点起算的 var secondServer = <%=DateDiff("s", "1970-01-01 08:00:00", Now())%>; var

JavaScript获取当前网页最后修改时间的方法_javascript技巧

本文实例讲述了JavaScript获取当前网页最后修改时间的方法.分享给大家供大家参考.具体如下: 下面的JS代码输出当前网页最后修改时间,用到了document.lastModified属性 <!DOCTYPE html> <html> <body> This document was last modified on: <script> document.write(document.lastModified); </script> <

获取服务器时间-如何通过浏览器获取web服务器时间(c#)

问题描述 如何通过浏览器获取web服务器时间(c#) 因工作中发现部分客户端机器时间设置不正确,导致客户端所录入内容难以查找.故想通过直接从浏览器获取web服务器时间的方式确保时间的正确性.可是C#中DateTime.Now只能取得浏览器端的时间,无法获得web服务器端的时间,web服务器未搭建SQL服务器,这该如何解决? 解决方案 DateTime.Now应该是服务器上的时间,客户端时间一般是由浏览器发送过来的 解决方案二: 看错你的需求了,你可以在服务器上做个接口,然后调用那个接口,例如we

Javascript获取当前时间函数和时间操作小结_javascript技巧

在项目需要一个计时器,效果如下: js代码: 复制代码 代码如下:     /*获取当前时间*/     function getCurrentDate()     {       var timeStr = '';       var curDate = new Date();       var curMonth = curDate.getMonth()+1;  //获取当前月份(0-11,0代表1月)       var curDay = curDate.getDate();      

ASP 时间函数及如何获取服务器时间的写法_应用技巧

一.常用的ASP时间函数 1.now() 获取当前系统日期和时间,ASP输出格式:<%=now()%> 2.Year(now()) 获取年份, ASP输出格式:<%=Year(now())%> 3.Month(now()) 获取当前月份,ASP输出格式:<%=Month(now())%> 4.day(now()) 获取当天数,ASP输出格式:<%=day(now())%> 5.hour(now())获取小时数,ASP输出格式:<%=hour(now()

ASP 时间函数及如何获取服务器时间的写法

一.常用的ASP时间函数 1.now() 获取当前系统日期和时间,ASP输出格式:<%=now()%> 2.Year(now()) 获取年份, ASP输出格式:<%=Year(now())%> 3.Month(now()) 获取当前月份,ASP输出格式:<%=Month(now())%> 4.day(now()) 获取当天数,ASP输出格式:<%=day(now())%> 5.hour(now())获取小时数,ASP输出格式:<%=hour(now()

javascript显示时间,现在时间已经显示出来了 就是不自动刷新 麻烦各位看一下 谢谢啦

问题描述 javascript显示时间,现在时间已经显示出来了 就是不自动刷新 麻烦各位看一下 谢谢啦 系统当前时间 <br> function mytime()<br> {<br> var now=new Date();//创建对象<br> var year=now.getFullYear();//获取年份<br> var month=now.getMonth()+1;//获取月份<br> var date=now.getDate(

在页面中输出当前客户端时间javascript实例代码_javascript技巧

时间对象(Date())比较简单,本文旨在为初学者入门使用,大牛可略过! 本文承接基础知识实例,说一下实例的要求: 在页面中输出当前客户端时间(2015年1月1日星期一10:10:10这样的格式),每过一秒中页面不刷新,但是时间自动更新(用两种定时器方法都可以实现),鼠标点击时间,如果原先运动则停止,如果停止则继续运动: 要求基本上可分为2部分:一是不刷新自动更新时间,二是点击时间停止或更新时间 好,那我们还是老规矩,一步一步来,既然是时间,那就会用到时间对象 new Date(); var n