Posted in Javascript onMay 19, 2015
JS是在客户端运行的脚本,而不是运行在服务器上,通常来说,通过JS获取时间的时候获取到的时间是访客本地电脑上的时间,为了让网页上的时间不因访客电脑差异而不同,我们有必要直接JS获取服务器时间。
下面是完整的js获取服务器时间代码,是使用javascript获取服务器时间的完整实例,js动态刷新服务器时间。
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>AJAX获取服务器时间</title> <script type="text/javascript"> /* * ajax 函数,处理 ajax 请求 * @param function callback 回调函数 * @因为要和服务器交互,所以必须在服务器环境运行,不能在硬盘上直接打开 */ function ajax(callback){ if(typeof callback!='function') return; var ajaxObject; try{ ajaxObject=new XMLHttpRequest(); }catch(e){ try{ ajaxObject=new ActiveXObject('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); } } }; } /* * 获取时间并动态刷新 */ function getTime(){ ajax( function(ao){ //只需要AJAX一次,将服务器时间获取后以毫米为单位保存到一个变量中 _timestamp=Date.parse(ao.getResponseHeader('Date')); _timestamp=_timestamp.toString().match(/^\d$/)?_timestamp:new Date().getTime(); //设置定时器每过一秒动态刷新一次时间 setInterval( function(){ //这里可以自定义时间显示格式 document.getElementById('_timer').innerHTML=new Date(_timestamp).toLocaleString(); _timestamp+=1000; }, 1000 ); } ); } window.onload=getTime; </script> </head> <body> <div id="_timer">正在获取服务器时间……</div> </body> </html>
思路分析:
服务器端时间这个概念很模糊。因为服务器端毕竟可能不是由一台机器组成的。最简单的情况,也分web服务器和db服务器。你说的究竟是哪一种
如果是web服务器。
那么直接在java或者.net那头new Date()就ok了
不要在网页中的<script>里面new Date,那个只是客户端时间
如果是db服务器。
需要连接到数据库,通过sql来取得。比如oracle的就是select sysdate from dual。
示例:
如果js要取得这样的服务器端时间,方法有很多。思路大体差不多。
1.
<script type="text/javascript">
var date = <%=date(刚才在服务器端取得的时间,内容取得方法上面分析过了)%>
</script>
2.<script type="text/javascript" src=".../ScriptServlet"></script>
将Servlet的返回流中写入一个js文件,使其当中的var nowDate = 服务器端时间
3.ajax,这个就不说了,网上一大堆
以上所述就是本文的全部内容了,希望大家能够喜欢。
javascript实现获取服务器时间
- Author -
hebedich声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@