一口氣看懂時區(國際化時區解讀)
2023-11-05 15:46:22
https://baike.baidu.com/item/時區/491122?fr=aladdin《Why We Have Time Zones》https://baike.baidu.com/tashuo/browse/content?id=aa3243d25266861aa52f989f&lemmaId=491122&fromLemmaModule=pcRight&lemmaTitle=時區 (二十四時區制的誕生淵源:美國鐵路系統對於各地太陽時差異的解決)https://24timezones.com/map_zh.php#/map(世界時鐘 )https://www.beijing-time.org/shiqu/ (時分時差換算) 由於美國東西部鐵路運行時間標準不統一,依靠正午來定位,造成火車時間運行表標準不一,同時時區標準化的過程帶來生活、工作、公共資源統籌等時間調度困擾,時區由於所處地理位置經緯度不同,劃分出不同的時區。正式的時區劃分包括24個時區,每一時區由一個英文字母表示。每個經度15°劃分一個時區,有一個例外,每個時區有一條中央子午線;例如,GMT屬於「z」區,因此其時間後通常添加後綴「Z」(口語中用後綴「Zulu」)。 [1] 公元1884年,在華盛頓召開的一次國際經度會議上,規定將全球劃分為24個時區,分別是中時區(規定英國(格林尼治天文臺舊址)為中時區(零時區))、東1-12區,西1-12區。每個時區橫跨經度15度,時間正好是1小時。最後的東、西第12區各跨經度7.5度(有0時區,故東西12時區合為1時區),以東、西經180度為界。每個時區的中央經線上的時間就是這個時區內統一採用的時間,稱為區時。相鄰兩個時區的時間相差1小時。
二、生活影響1個國家或1個省份同時跨著2個或更多時區,為了照顧到行政上的方便,常將1個國家或1個省份劃在一起。所以一些時區並不嚴格按南北直線來劃分,而是按自然條件來劃分。 例如,中國東8區的時間總比泰國東7區的時間早1小時,而比日本東9區的時間晚1小時。因此,出國旅行的人,必須隨時調整自己的手錶,才能和當地時間相一致。凡向西走,每過一個時區,就要把表撥慢1小時(比如2點撥到1點);凡向東走,每過一個時區,就要把表撥快1小時(比如1點撥到2點)。並且規定英國(格林尼治天文臺舊址)為本初子午線,即零度經線。 時區計算:計算的區時=已知區時-(已知區時的時區-要計算區時的時區)。(註:東時區為正,西時區為負) 例如:已知東京(東九區)時間為5月1日12:00,求北京(東八區)的區時。(北京時間=12:00-(9-8)=11:00,即北京時間為5月1日11:00。) 1912年,其時位於南京為中華民國時期中央氣象局,將中國劃分為五個時區。1919年(民國8年),中央觀象臺出版的《中華民國八年曆書》刊登了中國各大城市地理緯度表和所位於的標準時區及其標準時與該城市地方平時的比較表,發表了中國劃分五時區的計劃,同時提出了標準時如何傳遞的授時問題。 1949年中華人民共和國成立後,這些時區在大陸不再採用。但國民政府遷臺後,仍維持採用1912年的時區劃分,臺灣地區的標準時間繼續稱為「中原標準時間」。中國首都北京位於東八區,東八區的標準時就是中國的標準時間。
UTC:世界協調時間,時間後面追加Z為UTC時間,Z為0時區標誌,讀zulu,18:25:35 UTC為18:25:35Z。 (yyyy-MM-dd』T』HH:mm:ss.SSS Z)UTC偏移量: 0800GMT:格林治標準世界,。1924年2月5日開始,每一個小時向全世界發放調時信息。CST:中國標準時間 UTC 8CET:歐洲中部時間 ,比UTC早1個小時的時區,冬季時間為UTC 1,夏季為UTC 2 ,大部分歐洲及北非國家使用的理論時區:嚴格按照經度劃分的時區。法定時區:統一調整後使用的標準時間閏秒:在UTC中增加或減少1秒UNIX時間:從UTC1970年1月1日0時0分0秒至現在的秒數。 1970/1/1 00:00:00Z–>秒數(包含閏秒調整)。RFC-2822標準格式,形如:Sun Apr 08 2018 11:38:39 GMT 0800(CST)
ISO-8601標準格式,2018-04-08T11:38:39 08:00 日期用「-」相隔,與時間用「T」連接;2018-04-08T11:38:39Z Z代表UTC時間,Z也可寫成00:00
四、時許需求在時區應用中,在國際類公共場景中,為幫助客戶調整時差,類似賓館,常掛著幾個主時區的錶盤,便於客戶意向地的時區時間,這裡主要提現2種應用,輔助切換時區的各大錶盤,同時在支撐酒店運營的各系統種所使用的本地化時間。2大需求:時差查詢需求 本地化時間對場景的支持。
在應用中經常出現的時區場景如下,從中提煉出關於時間的一些場景函數。
在應用設計中,面對應用各主要階段(研發、測試、部署、運營)各個階段的時區影響。 應用的運營大多是本地化運營,為了保證本地化時區應用的持久化屬性,故在時區參數輸入輸入上,應該做本地化時區轉換。而資料庫及存儲中儘量使用UTC-unix即時。方便應用系統在應用層進行時區的轉換處理,輸入本地化時區->UTC,輸出為UTC->本地化時區。部分應用系統在國際化中,採取根據本地所在時區,動態轉換UTC->本地時區處理,切換不同時區後,應用時間也會動態變化,由於UTC時間閱讀的可視性較低,造成本地時區時間閱讀不一致,產生歧義。(根據本地時區,實時轉換時間輸出,適合與時間關聯的資源在不同時區均被承認的場景中)
圖示三種方式中,第一種從存儲、擴展方面既保持時間本身的時區特點,在各類時序存儲中不失特性,同時兼顧業務的持久化特性,以UTC0時區存儲,應用層可視業務情況轉換為指定時區處理。
四、程序語言對時區的支持1、在獲取時間的時候,指定時區,切勿本地化默認獲取,跨地區部署對接時,容易產生時間不一致。
2、與資料庫方向對接時,關注伺服器時區、客戶端連接的時區 。防止出現時區錯誤。
3、時間計算時,按本地時區轉換計算。
,