前言跟異國他鄉的朋友們微信聊天的時候,經常面臨時差的問題。我每次想要確定對方現在是幾點,總是要口算一下,有時忘記具體時差,或者涉及跨天,還得打開瀏覽器查一下,很不方便。有什么方法可以把朋友們所在城市的時間集中起來隨時供自己查看呢?于是想到了微信小程序。找了找市面上的時間小程序,不是功能太雜就是小廣告太多,不滿意。 為什么不自己動手量身打造一個呢? 行動起來。 首先快速明確需求很簡單:
然后創建項目開擼怎么創建和前期的準備就不在這里展開了,相信不少人都熟悉。如果不熟悉小程序開發的可以參考官網 或者我的另一篇文章如何開發微信小程序 ,上面有對如何開發小程序的簡明扼要的的介紹。 關鍵邏輯這個小程序的核心是時間的處理。如何得到其他地區的時刻信息?
這還不簡單? 我一開始也是這么想的,做完覺得還挺美,準備提交的時候,突然意識到問題:我時差全是基于北京時間計算的,換在其他國家訪問,獲取的本地時間已經不是北京時間了,時差應該變才對,寫死了時差可還行?!發布一個只能在國內使用的雞肋時間工具,可不是我的風格! 搗鼓一陣,新方案出爐:
1. 獲得零時區的時間零時區,也叫中時區,位于英國格林威治本初子午線上。該時區的地方時,叫做格林威治時間,也叫世界時。 我們不能直接獲得格林威治時間,但是我們可以獲得本地與格林威治的時間差:
然后根據本地時間和時間差獲得格林威治時間:
2. 查詢各地時區格林威治本初子午線將地球劃分為東西兩個半球,格林威治本初子午線為零時區,往西依次為西一區到西十一區,往東依次為東一區到東十一區,西十二區和東十二區重合成為東西十二區,一共劃分了24個時區,每個時區相差正好是1個小時。 北京是東八區,紐約是西五區,加州是西八區。 完整時區地圖:
3. 計算各地的絕對時間東時區的時刻比零時區快,西時區的時刻比零時區慢,所以東時區為正,西時區為負,所有時間計算記得轉換為毫秒。
獲取任何時區的絕對時間的完整核心代碼:
發布很快,第一版就完成了。
剛開始這個樣子略丑,有點裸奔的趕腳。不過第一版最主要是核心功能,簡陋的界面只是暫時的。 給當地的朋友檢驗確定時間展示正確后,提交代碼、提交審核,2天后收到審核通過的通知(吐槽騰訊的審核效率 |