javascript实现获取服务器时间
JS是在客户端运行的脚本,而不是运行在服务器上,通常来说,通过JS获取时间的时候获取到的时间是访客本地电脑上的时间,为了让网页上的时间不因访客电脑差异而不同,我们有必要直接JS获取服务器时间。
下面是完整的js获取服务器时间代码,是使用javascript获取服务器时间的完整实例,js动态刷新服务器时间。
<!DOCTYPEhtml> <html> <head> <metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/> <title>AJAX获取服务器时间</title> <scripttype="text/javascript"> /* *ajax函数,处理ajax请求 *@paramfunctioncallback回调函数 *@因为要和服务器交互,所以必须在服务器环境运行,不能在硬盘上直接打开 */ functionajax(callback){ if(typeofcallback!='function')return; varajaxObject; try{ ajaxObject=newXMLHttpRequest(); }catch(e){ try{ ajaxObject=newActiveXObject('Microsoft.XMLHTTP'); }catch(e){ } } if(!ajaxObject)return; if(ajaxObject.overrideMimeType){ ajaxObject.overrideMimeType('text/html'); } //location.href可以换成其他url,但必须是同一个站点的链接,并且文件存在 ajaxObject.open('get',location.href); ajaxObject.send(null); ajaxObject.onreadystatechange=function(){ if(ajaxObject.readyState==4){ if(ajaxObject.status==200){ callback(ajaxObject); } } }; } /* *获取时间并动态刷新 */ functiongetTime(){ ajax( function(ao){ //只需要AJAX一次,将服务器时间获取后以毫米为单位保存到一个变量中 _timestamp=Date.parse(ao.getResponseHeader('Date')); _timestamp=_timestamp.toString().match(/^\d$/)?_timestamp:newDate().getTime(); //设置定时器每过一秒动态刷新一次时间 setInterval( function(){ //这里可以自定义时间显示格式 document.getElementById('_timer').innerHTML=newDate(_timestamp).toLocaleString(); _timestamp+=1000; }, 1000 ); } ); } window.onload=getTime; </script> </head> <body> <divid="_timer">正在获取服务器时间……</div> </body> </html>
思路分析:
服务器端时间这个概念很模糊。因为服务器端毕竟可能不是由一台机器组成的。最简单的情况,也分web服务器和db服务器。你说的究竟是哪一种
如果是web服务器。
那么直接在java或者.net那头newDate()就ok了
不要在网页中的<script>里面newDate,那个只是客户端时间
如果是db服务器。
需要连接到数据库,通过sql来取得。比如oracle的就是selectsysdatefromdual。
示例:
如果js要取得这样的服务器端时间,方法有很多。思路大体差不多。
1.
<scripttype="text/javascript">
vardate=<%=date(刚才在服务器端取得的时间,内容取得方法上面分析过了)%>
</script>
2.<scripttype="text/javascript"src=".../ScriptServlet"></script>
将Servlet的返回流中写入一个js文件,使其当中的varnowDate=服务器端时间
3.ajax,这个就不说了,网上一大堆
以上所述就是本文的全部内容了,希望大家能够喜欢。