JS 跨時區時間解決方案
阿新 • • 發佈:2019-01-10
由於地球的物理執行規律,地球時間被劃分有24個時區,每個時區間隔一個小時,所以經常國外出差的朋友們也會關注一下目的地的時區及當地時間。
當然不僅生活中會受時間的影響,對於WEB程式設計師開發者開發國際化專案時也會遇到不小的麻煩,比如公司WEB伺服器在中國,要確保國外客戶訪問資料的正常與正確性,得考慮跨時區的問題。既要確保伺服器時間的統一性,又要確保時間的重要性。
javaScript開發國際化專案有時也會遇到這個問題,以下為本人根據網路查詢所得及結合自身專案情況所寫的一個獲取不同時區時間的函式方法。
//得到標準時區的時間
function getLocalTime(i) {
//引數i為時區值數字,比如北京為東八區則輸入8,西5輸入-5,現預設東八區北京時間
var i=i?parseFloat(i):8;
//得到本地時間
var d = new Date();
//得到1970年一月一日到現在的秒數
var local = d.getTime();
//本地時間與GMT時間的時間偏移差
var offset = d.getTimezoneOffset() * 60000;
//得到現在的格林尼治時間
var utcTime = local + offset;
return new Date(utcTime + 3600000 * i);
}
//轉換伺服器時區時間
function formatTime(t,utc){
//t傳入的時間引數,utc傳入的時區引數
if(!t) return;
//獲取本地時間
var d=new Date();
//獲得本地時區
utc=utc?parseFloat(utc):d.getTimezoneOffset()/60;
//格式化傳入時間
var time=new Date(t);
//轉換傳入時間為本地時間(預設傳入伺服器時間為東八區時間)
time.setHours(time.getHours()+(utc-8));
//輸出時間
var yy=time.getFullYear();
var MM=time.getMonth()+1;
MM=MM<10?'0'+MM:MM;
var dd=time.getDate();
dd=dd<10?'0'+dd:dd;
var hh=time.getHours();
hh=hh<10?'0'+hh:hh;
var mm=time.getMinutes();
mm=mm<10?'0'+mm:mm;
var ss=time.getSeconds();
ss=ss<10?'0'+ss:ss;
var date=yy+'-'+MM+'-'+dd+' '+hh+':'+mm+':'+ss;
return date;
}