js 時差轉換 getTimezoneOffset()


如果我們的應用是針對世界各地的,當要把后台(服務器)存的時間展示給不同地區的用戶時,這個時間應該經過時差轉換、 轉成用戶客戶端本地的時間,然后呈現給用戶,即下面用到的getTimezoneOffset()

如果單純的換算本地時間與其他時區的時間,也要用到getTimezoneOffset()

需要了解的概念:

格林威治時間

格林威治子午線上的地方時,或零時區(中時區)的區時叫做格林威治時間,也叫世界時。(更多詳細的概念不說了,這里我們不需要。) 比如我們中國是東八區,北京時間是(GMT+08:00)

獲得本地與格林威治時間的時差:new Date().getTimezoneOffset(),單位為分鍾。

已知格林威治時間,換算本地正確時間

本地時間 = 格林威治時間 - 時差

已知本地時間,換算對應格林威治時間:

格林威治時間 = 本地時間 + 時差

已知本地時間,換算其他時區的時間

因為時區間的差異是以小時為單位的。所以算出0時區的時間后,再減去或加上相應的小時即可(東N區便+N小時,西N區便-N小時)。 為了方便計算,東N區記做正數,西N區記做負數,即:

目標時區時間 = 本地時間 + 時差 + 時區間隔

 

 

例子1:將本地現在時間換算成0時區時間

//算出時差,並轉換為毫秒:
    var offset = new Date().getTimezoneOffset()* 60 * 1000;
    //算出現在的時間:
    var nowDate = new Date().getTime();
    //算出對應的格林位置時間
    var GMTDate = new Date(nowDate + offset);//Wed Apr 20 2016 22:27:02 GMT+0800 (CST)
    //轉換成本地時間格式
    var GMTDateInLocalString = GMTDate.toLocaleString();//2016/4/20 下午10:27:02

 

例子2:將本地現在的時間換算成東2區的時間

    //東2區,東時區記做正數
    var zoneOffset = 2;
    //算出時差,並轉換為毫秒:
    var offset2 = new Date().getTimezoneOffset()* 60 * 1000;
    //算出現在的時間:
    var nowDate2 = new Date().getTime();
    //此時東2區的時間
    var currentZoneDate = new Date(nowDate2 + offset2 + zoneOffset*60*60*1000);

    console.log("東2區現在是:"+currentZoneDate);

 


免責聲明!

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



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