JS 時區時間轉換
阿新 • • 發佈:2019-02-05
業務場景:
頁面伺服器時間是東八區時間,頁面 JS 功能需要對比伺服器時間和使用者本地時間,為相容世界各地時間,需要將使用者本地時間轉換為東八區時間。
基本概念
格林威治時間
格林威治子午線上的地方時,或零時區(中時區)的區時叫做格林威治時間,也叫世界時。(更多詳細的概念不說了,這裡我們不需要。) 比如我們中國是東八區,北京時間是(GMT+08:00)
獲得本地與格林威治時間的時差:new Date().getTimezoneOffset(),單位為分鐘。
已知格林威治時間,換算本地正確時間
本地時間 = 格林威治時間 - 時差
已知本地時間,換算對應格林威治時間:
格林威治時間 = 本地時間 + 時差
已知本地時間,換算其他時區的時間
因為時區間的差異是以小時為單位的。所以算出0時區的時間後,再減去或加上相應的小時即可(東N區便+N小時,西N區便-N小時)。 為了方便計算,東N區記做正數,西N區記做負數,即:目標時區時間 = 本地時間 + 時差 + 時區間隔
例子:將本地時間轉換為東八區時間
var timezone = 8; //目標時區時間,東八區
var offset_GMT = new Date().getTimezoneOffset(); // 本地時間和格林威治的時間差,單位為分鐘
var nowDate = new Date().getTime(); // 本地時間距 1970 年 1 月 1 日午夜(GMT 時間)之間的毫秒數
var targetDate = new Date(nowDate + offset_GMT * 60 * 1000 + timezone * 60 * 60 * 1000);
console.log("東8區現在是:" + targetDate);