Javascript獲取服務器時間


js獲取當前時間戳的方法-JavaScript 獲取當前毫秒時間戳有以下三種方法:

var timestamp =Date.parse(new Date());    結果:1280977330000       //不推薦; 毫秒改成了000顯示

var timestamp =(new Date()).valueOf();       結果:1280977330748       //推薦; 

var timestamp=new Date().getTime();         結果:1280977330748        //推薦; 

注意 在js中這三種方法獲取到的是客戶端的時間

獲取服務器時間:

Javascript是運行在客戶端的腳本,我們一般都用new Date()來獲取當前時間,但是得到的是客戶端的時間,客戶端時間是隨意更改的,如果要做一個產品發布倒計時的話,客戶端時間一改,就要鬧笑話了。業務中需要用到服務器時間的場景還有很多,那么僅僅通過js怎么拿到服務器時間呢?事實上,只需要一個ajax請求就搞定,通過讀取XMLHttpRequest對象的響應頭里面的時間戳得到當前服務器時間

通過ajax向服務器發送請求,當服務器收到請求后即可讀取響應頭的時間戳了,不管請求成功或失敗,都可以拿到時間戳。怎么判斷服務器收到請求了呢?當ajax請求發送之后,XMLHttpRequest有5中狀態變化:

XMLHttpRequest.readyState值 表示的意思
0 未初始化,已經創建一個XMLHttpRequest對象,但是還沒有初始化
1 未發送,代碼已經調用了xmlhttprequest open()方法並且xmlhttprequest已經准備好把一個請求發送到服務器
2 已發送,已經通過send()方法把一個請求發送到服務器端,但是還沒有收到一個響應,可以讀取響應頭信息了
3 正在接收,已經接收到http響應頭部信息,但是消息體部分還沒有完全接收完畢
4 已加載,響應已經被完全接收

當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>

轉載:http://www.cnblogs.com/wangmeijian/p/4442830.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM