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,那個只是客戶端時間</script>
如果是db伺服器。
需要連接到資料庫,透過sql來取得。例如oracle的就是select sysdate from dual。
範例:
如果js要取得這樣的伺服器端時間,方法有很多。思路大體差不多。
1.
2.
將Servlet的返回流中寫入一個js文件,使其當中的var nowDate = 伺服器端時間
3.ajax,這個就不說了,網路上一大堆
以上所述就是本文的全部內容了,希望大家能夠喜歡。