之所以會這樣,是因為我發(fā)了一個SpringOne的通知,Spring的官方技術發(fā)布會。
請注意大會第一項的時間欄。上面寫著:
中部時間晚上9:00—10:00
也就是當天晚上9點正式開始。
但是一個讀者的評論讓我思考。
我查了一下CST,時區(qū)的縮寫,可以代表下面這么多時區(qū)的縮寫:
中部時間:中部標準時間UTC—6:00
澳大利亞中部時間:中部標準時間UTC+9:30
中國標準時間:中國標準時間UTC+8:00
古巴標準時間:古巴標準時間UTC—4:00
我通過分析得出的結論是,如果美國時間晚上8點開始,整個會議大部分都在凌晨進行,不太合理,所以我猜測應該是中國時間,也就是中國標準時間UT+8:00。
我讓我的一個美國朋友訪問下面的頁面,果然,時間和我顯示的不一樣:
現(xiàn)在是太平洋時間早上6點到7點
PDT代表太平洋夏令時UTC—7:00太平洋夏令時。
我請我的一個英國朋友再來拜訪我,得到的答復是:
英國夏令時下午2點至3點
BST代表英國夏令時UTC+1:00。
我請我在德國的一個朋友再次來訪,得到的答復是:
CEST下午3點至4點
CEST代表中歐夏令時UTC+2: 00。
什么原則。
然后我想,原理應該是請求頭加什么參數(shù)來標識我的時區(qū)。
但是我搶到包之后,并沒有發(fā)現(xiàn)類似的參數(shù)。
然后我就想,那要根據我的要求IP來判斷。
于是我查了一下,發(fā)現(xiàn)無論我怎么切換vpn,顯示的時間都是CST和中國時間。
正當我一籌莫展的時候,我問一位即將回國的英國朋友。他參觀后居然展示了中國時間!
中部時間晚上9:00—10:00
然后他說了一句話,一句驚醒夢中人的話他說他很快就要回中國為了提前適應,他把電腦的時區(qū)設置成了中國
原來如此!
我立即將我的時區(qū)調整為美國的太平洋時間。
重新打開瀏覽器,訪問SpringOne。
時間終于變成了太平洋時間,證明美國人從早上開始看這個發(fā)布會,然后持續(xù)了一整天我們中國是晚上開始看,然后要想趕上直播就需要熬夜
也證明了頁面顯示的時間和我的操作系統(tǒng)設置的時區(qū)有關。
追根究底,繼續(xù)探索。
話說回來,這個網站的H5頁面是怎么處理我系統(tǒng)的時間的。
我開始搶包。
首先,這肯定不是靜態(tài)頁面,所以一定是js動作。
在浩如煙海的js包中,我找到了一個名為schedule.js的,負責給這些時間賦值,一看就知道。
注意,getUnixTimestamp方法被廣泛用于獲取時間。
所以我在另一個js里找到了這個方法的定義,在core.min.js里
這個方法是壓縮的,格式化它,然后執(zhí)行關鍵信息,如下:
$ tz datetime:$ a . $ tz datetime . eachd . convert datetime)convert datetime:function(b)varc = b . dataset . datetimeoutvarh = moment . tz . guess()varc = b . dataset . datetimeoutgetunixtimestamp:function(b,c)returnmoment.tz(b,c"MM/DD/YYYYHH:mm ","America/New_York ")tz(h)
重點看這個功能。
varh=moment.tz.guess
該功能是與系統(tǒng)設置的時區(qū)進行交互的關鍵它可以檢查你的時區(qū),這正是你的系統(tǒng)設置的時區(qū)
我將系統(tǒng)時區(qū)設置為美國太平洋時區(qū),在瀏覽器控制臺中執(zhí)行這段js代碼后,得到了以下結果:
moment . tz . guess, "美國/洛杉磯 "
我將系統(tǒng)時區(qū)設置為中國的北京時間,在瀏覽器控制臺中執(zhí)行這段js代碼后,得到了以下結果:
gt,gt,moment . tz . guess, "亞洲/上海 "
僅此而已這個js函數(shù)可以獲取我們系統(tǒng)設置的時區(qū),所以自然可以用系統(tǒng)時區(qū)動態(tài)改變頁面上的時間
怎么改就是通過剛才getUnixTimestamp的函數(shù)。
getUnixTimestamp:function return moment . tz(b,c"MM/DD/YYYYHH:mm ", "美國/紐約 ")tz(h)
我們知道H代表時區(qū),所以第一行tz是設置一個紐約時間的初始值,第二行tz轉換成我們系統(tǒng)設置的時區(qū),第三行valueOf最后可以轉換成時間戳。
我們就拿一個數(shù)值瀏覽器控制臺來執(zhí)行這個函數(shù)驗證一下吧比如我們想看看2021—09—01 08:00紐約時間換算成北京時間是什么結果
力矩 gttz gttz(moment . tz . guess()) gt,
這個1630497600000是時間戳轉換工具轉換的,它是:
完美這個函數(shù)將紐約時間2021—09—01 08:00轉換為北京時間2021—09—01 20:00,剛好差1 2個小時沒問題
a類結果,轉換后的值填充在頁面上的標簽tz—datetime下。
$ tz datetime:$ a . $ tz datetime . eachd . convert datetime)
是的,那是我們看見它的地方。
至此,這個問題終于得到了完美的解釋!
感謝這位讀者的提問,感謝世界各地的親朋好友的支持,讓我度過了一個愉快的探索下午,還有這篇隨機的文章!
我覺得還是做個技術人好,就是愿意花一個下午的時間去研究學習,只為了解答自己心中的一個疑問,而得出結論后的那種快樂是我獨有的。
然后我就有了雙喜臨門,就是寫了一篇文章給大家看,看了大家的留言,贊了。
希望對大家有幫助~
聲明:本網轉發(fā)此文章,旨在為讀者提供更多信息資訊,所涉內容不構成投資、消費建議。文章事實如有疑問,請與有關方核實,文章觀點非本網觀點,僅供讀者參考。
猜你喜歡
-
游客在進入北京環(huán)球度假區(qū)時須核驗北京健康
具體如下:北京環(huán)球度假區(qū)繼續(xù)按照相關政府部門的限流要求,以預約入園的形式加強人流動態(tài)監(jiān)測和...詳情
2022-04-28
-
杭州湘湖的草坪人氣很高不少人在這里搭帳篷
湘湖邊亂搭帳篷,煞了春日風景景區(qū)出臺最新政策,將設置臨時帳篷搭建區(qū),后續(xù)還要增設露營服務區(qū)...詳情
2022-04-14
-
南非徐霞客在云南:從行萬里路到吃百碗米線
題:南非徐霞客在云南:從行萬里路到吃百碗米線的文化之旅杜安睿來自南非,是一名國際注冊會計師...詳情
2022-04-10
-
廣州新增3例本土確診病例雙層觀光巴士全部
廣州新增3例本土確診病例雙層觀光巴士全部停運廣州市政府新聞辦公室21日公布的信息顯示,過去...詳情
2022-03-22