根據時間戳獲取時間整點差8小時解決方案

首先介紹一下:

格林尼治時間:格林威治子午線上的地方時,或零時區(中時區)的區時叫做格林威治時間,也叫世界時。(更多詳細的概念不說了,這裏我們不需要。)

北京時間與格林尼治時間或UTC時間相差8個時區,北京、上海、重慶位於東8區,頁面服務器時間是東八區時間,頁面 JS 功能需要對比服務器時間和用戶本地時間,爲兼容世界各地時間,需要將用戶本地時間轉換爲東八區時間。

獲得本地與格林威治時間的時差new Date().getTimezoneOffset(),單位爲分鐘。瞭解更多:https://www.w3school.com.cn/jsref/jsref_obj_date.asp

已知格林威治時間,換算本地正確時間:
本地時間 = 格林威治時間 - 時差

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

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

爲時區間的差異是以小時爲單位的。所以算出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);

參考:https://blog.csdn.net/u012193330/article/details/79637660

瞭解GMT和UTC的區別:

https://blog.csdn.net/hongweigg/article/details/50385113

http://baike.baidu.com/view/42936.htm?fr=iciba

如果本文章對你有所幫助,歡迎給我點贊  ^o^

發佈了28 篇原創文章 · 獲贊 8 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章