日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

系統設計中跨時區問題的解決方案

來源: 責編: 時間:2024-04-29 16:17:17 279觀看
導讀一、背景假如開發一套統一的系統產品,供遍布全球的所有分公司使用。產品功能設計中,經常會遇到一場活動,分跨不同時區,系統需要顯示不同時區的時間,同時希望跨時區的用戶可以同一時間開始,同一時間結束。對于類似跨時區處理

一、背景

假如開發一套統一的系統產品,供遍布全球的所有分公司使用。z9r28資訊網——每日最新資訊28at.com

產品功能設計中,經常會遇到一場活動,分跨不同時區,系統需要顯示不同時區的時間,同時希望跨時區的用戶可以同一時間開始,同一時間結束。z9r28資訊網——每日最新資訊28at.com

對于類似跨時區處理問題,那我們該如何設計實現呢?z9r28資訊網——每日最新資訊28at.com

圖片z9r28資訊網——每日最新資訊28at.com

二、幾個重要概念

  • 時區

    劃分時區是為了便于人們進行跨地區的交流、協作和管理。z9r28資訊網——每日最新資訊28at.com

    時區的劃分以地球表面按經線從東到西劃成一個個區域,每隔經度15°劃分一個時區,規定相鄰區域的時間相差1小時,如下圖所示:z9r28資訊網——每日最新資訊28at.com

圖片圖片z9r28資訊網——每日最新資訊28at.com

  • 格林尼治時間

    英國皇家格林尼治天文臺,UTC/GMT 0 (零時區)。z9r28資訊網——每日最新資訊28at.com

  • 中國時區

    有東五區、東六區、東七區、東八區、東九區,新疆在東五、東六、而東北在東九區,但解放后我們國家統一采用北京時間(東八區)為準。z9r28資訊網——每日最新資訊28at.com

  • UTC

    Coordinated Universal Time,世界統一時間,中國是UTC+8。z9r28資訊網——每日最新資訊28at.com

  • GMT

    Greenwish Mean Time,以地球公轉和自轉來計算時間,而UTC以原子鐘來計算時間。z9r28資訊網——每日最新資訊28at.com

  • UNIX時間戳

    1970年1月1日(UTC/GMT的午夜)開始所經過的秒數,因此,不同的時區的時間戳是相同的。z9r28資訊網——每日最新資訊28at.com

三、操作系統、數據庫時區設置

3.1 Linux 中設置時區

一臺Linux服務器有兩個時間源,一個是硬件時間,即服務器硬件CMOS維護的時間,還有一個是軟件時間,即操作系統維護的時間,前者通過hwclock命令來訪問,后者則主要通過date命令來訪問。z9r28資訊網——每日最新資訊28at.com

date是最常用的時間相關的命令,例如:z9r28資訊網——每日最新資訊28at.com

# 獲取當前時間$ dateFri Apr 26 15:22:16 CST 2024# 以特定格式輸出當前時間,格式字符串前以"+"開頭,例如獲得當前時間的epoch$ date +%s1714117833# 設置當前時間$ sudo date -s "2024-04-25 00:00:00"Thu Apr 25 00:00:00 CST 2024

如果是云服務器的話,中國區服務器默認都是UTC+8,海外機器則是UTC+0,關于這個大家再需要確認一下。z9r28資訊網——每日最新資訊28at.com

Linux 使用 tzselect 調整時區

該命令會向導式的選擇洲區、國家和城市,然后在/usr/share/zoneinfo下會生成時區的文件,將該文件覆蓋/etc/localtime即可完成時區設置。z9r28資訊網——每日最新資訊28at.com

#設置時區tzselect

3.2 MySQL 中設置時區

先登錄到mysql 安裝所在的機器。z9r28資訊網——每日最新資訊28at.com

-- 看下當前的mysql時區設置show variables like "%time_zone%";

下圖顯示 SYSTEM,表示用的默認時區。z9r28資訊網——每日最新資訊28at.com

圖片圖片z9r28資訊網——每日最新資訊28at.com

我們可以修改成 +8 的北京所在時區,操作如下:z9r28資訊網——每日最新資訊28at.com

set global time_zone = '+8:00'; set time_zone = '+8:00';

如上修改,MySQL如果重啟后,又會恢復之前的設置。z9r28資訊網——每日最新資訊28at.com

下面介紹一種設置,讓重啟永久生效的方案:修改設置,重啟永久生效。z9r28資訊網——每日最新資訊28at.com

修改配置文件 /etc/my.cnfz9r28資訊網——每日最新資訊28at.com

[mysqld]default-time_zone = '+8:00'

重啟 MySQL 生效z9r28資訊網——每日最新資訊28at.com

systemctl stop mysqld.servicesystemctl start mysqld.service

四、系統跨時區設計

現在我們回到正規,談談如何解決上面開篇提出的問題。z9r28資訊網——每日最新資訊28at.com

4.1 服務端中的時間處理

既然時區的處理不能在客戶端做,換言之就必須在服務端實現。z9r28資訊網——每日最新資訊28at.com

這樣就需要解決兩個問題:時間的保存和獲取。z9r28資訊網——每日最新資訊28at.com

客戶端傳來的時間為客戶端所在時區的當地時間,服務端接收到客戶端發送的時間后,需要基于客戶端相應時區轉換成UTC時間才能保存到數據庫。z9r28資訊網——每日最新資訊28at.com

圖片圖片z9r28資訊網——每日最新資訊28at.com

所有后端暴露的接口中的時間對象,全部以 UTC 時間表示。z9r28資訊網——每日最新資訊28at.com

同時,所有后端在存儲、計算、傳輸時間時,也統一使用 UTC 時間。由于 DB 存儲時間時,時區信息會被丟掉,因此應保證丟掉的時區,是大家明確約定清楚的無歧義的,即 UTC。這樣一來,數據庫中的所有時間字段也都沒有歧義。z9r28資訊網——每日最新資訊28at.com

4.2 前端中的時間

時間在前端中的應用比較簡單,通常的方案是:后端直接返回 ISO 標準本地時間,避免 UTC 在前端再次格式化和處理時區,否則會把問題變得更加復雜(時區設置只發生在應用服務器中)。z9r28資訊網——每日最新資訊28at.com

如果有需要處理跨時區的業務場景需,可以讓用戶選擇時區,并在任何時候都將處理后的時區信息放到時間字符串中。z9r28資訊網——每日最新資訊28at.com

圖片圖片z9r28資訊網——每日最新資訊28at.com

前端的時間格式化比較簡單,可以使用 Day.js 和 Moment.js 等時間庫來完成。z9r28資訊網——每日最新資訊28at.com

正是因為前面講到的時區問題,Moment.js 為了處理此問題,使用了一個巨大的 JSON 文件記錄了不同年份之間、不同國家、不同經緯度的時區信息,另外這些信息還會和語言信息綁定導致文件非常巨大。z9r28資訊網——每日最新資訊28at.com

4.3 其它注意事項

在編程中還有一些額外的坑可能需要注意:z9r28資訊網——每日最新資訊28at.com

  • 使用環境變量配置時區信息,使用應用服務器來裁決時區(沒有特別業務說明的情況下),因此確保服務器配置的時區相同。
  • 如果是跨國交易或者數據同步的時候,根據客戶端連接到的服務器來決定操作用戶所屬的時區。
  • 依賴應用服務器的時區信息做時區裁決,不要依賴數據庫的時區設置,數據庫透明存放數據即可。
  • 時區配置來源有操作系統、環境變量、數據庫時區、Java 啟動參數,建議統一使用 Java 啟動參數,避免配置出錯,數據庫不要做時區自動轉換,避免使用 TIMESTAMP 類型。
  • 在高并發的場景中獲取系統時間可能有性能問題,原因是 JVM 需要訪問進入系統內核態執行指令,當高并發且不需要高精度時間時可以增加緩存,但需要權衡處理。
  • 有時候在處理業務時,需要考慮自然月問題,需要特別注意。
  • 關于時間同步問題中,還有一個墻上時鐘和單調時鐘的問題。墻上時鐘是指根據日歷獲取時間,會受到時間校對回撥的問題,而單調時鐘是指系統啟動后的秒數,它不會回撥。在使用 NTP 服務時,可以配置為 NTPD 模式,通過調慢時間頻率避免回撥。

五、補充知識:夏令時、冬令時

圖片圖片z9r28資訊網——每日最新資訊28at.com

夏令時(Daylight Saving Time:DST),也叫夏時制,又稱“日光節約時制”和“夏令時間”,是一種為節約能源而人為規定地方時間的制度,在這一制度實行期間所采用的統一時間稱為“夏令時間”。一般在天亮早的夏季人為將時間調快一小時,可以使人早起早睡,減少照明量,以充分利用光照資源,從而節約照明用電。z9r28資訊網——每日最新資訊28at.com

夏令時調整通常適用于:夏季日照時間相對較長,日出和日落時間發生較大變化的地方。關于夏令時的問題,人們褒貶不一。z9r28資訊網——每日最新資訊28at.com

有夏令時就會有冬令時,冬令時 通常是指當地使用的標準時間。在使用夏令時 - 日光節約時制(Daylight Saving Time) 的地區,夏天時鐘撥快一小時,冬天再撥回標準時間。z9r28資訊網——每日最新資訊28at.com

那為什么我國沒有夏令時呢?z9r28資訊網——每日最新資訊28at.com

其實不使用夏令時也能實現節約能源、減少照明成本的目的,只不過把調整人們生活節奏的權利給到了具體場景。在學校,會使用夏季和冬季課表,在工作環境中,某些公司也會針對下冬夏調整上班時間。z9r28資訊網——每日最新資訊28at.com

六、閱讀更多及參考文獻

本文參考資料:z9r28資訊網——每日最新資訊28at.com

  • https://en.wikipedia.org/wiki/Time_zone
  • https://zh.wikipedia.org/wiki/ISO_8601
  • https://www.rfc-editor.org/rfc/rfc3339
  • https://datatracker.ietf.org/doc/html/rfc5545
  • https://en.wikipedia.org/wiki/System_time
  • https://www.iplocate.com/
  • https://en.wikipedia.org/wiki/Timestamp

本文鏈接:http://m.www897cc.com/showinfo-26-86510-0.html系統設計中跨時區問題的解決方案

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Vue 超實用技巧!建立邏輯與動畫樣式的通道

下一篇: Python 教你三分鐘用 Bert 搭建問答搜索引擎

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
亚洲女人av| 91久久久久久| 国产欧美视频一区二区三区| 国产精品久久久久久久久久尿 | 欧美在线视频二区| 久久久久一区二区| 欧美另类一区| 国产精品影音先锋| 国产视频一区在线观看一区免费| 激情小说另类小说亚洲欧美| 亚洲欧洲一区二区在线播放 | 国产偷自视频区视频一区二区| 黄色欧美日韩| 亚洲美女中出| 欧美在线视频观看| 欧美激情偷拍| 国产精品亚洲精品| 1000部精品久久久久久久久| 日韩系列在线| 欧美中文字幕视频| 欧美日韩国产首页在线观看| 国产日韩欧美综合在线| 亚洲国产一区在线| 午夜亚洲影视| 欧美欧美天天天天操| 国产亚洲欧美日韩一区二区| 亚洲国产欧美在线人成| 午夜精品久久久久久久99黑人| 欧美1区2区视频| 国产精品亚洲综合一区在线观看 | 欧美日韩免费高清一区色橹橹| 国产有码一区二区| 亚洲一二三四久久| 欧美成人精品不卡视频在线观看| 国产美女精品视频免费观看| 亚洲精品在线观看免费| 久久精品视频免费播放| 欧美日韩一区二区高清| 亚洲丰满在线| 久久国产日韩欧美| 国产精品久久久久9999高清 | 久久精品动漫| 国产精品久久久久久久7电影| 亚洲第一在线| 久久精品视频99| 国产精品综合色区在线观看| 99国产精品视频免费观看一公开| 久久激情网站| 国产精品自拍视频| 中日韩高清电影网| 欧美女同在线视频| 亚洲国产小视频在线观看| 久久激情网站| 国产九色精品成人porny| 一区二区精品国产| 欧美丰满少妇xxxbbb| 在线播放豆国产99亚洲| 欧美一区精品| 国产麻豆成人精品| 亚洲自拍偷拍麻豆| 欧美日韩一区综合| 日韩午夜在线电影| 欧美成人免费小视频| 亚洲成色精品| 久久久久久尹人网香蕉| 国产区在线观看成人精品| 亚洲最新在线| 欧美日韩 国产精品| 亚洲欧洲一区二区三区久久| 麻豆精品一区二区av白丝在线| 国产一区二区日韩精品欧美精品 | 欧美日韩的一区二区| 91久久精品国产91久久性色tv| 六月婷婷一区| 狠狠综合久久av一区二区小说| 欧美在线视频一区二区| 国产日本精品| 欧美一二三视频| 国产美女一区| 久久精品国产在热久久| 国外成人免费视频| 久久亚洲综合色| ●精品国产综合乱码久久久久| 久久久欧美一区二区| 激情成人中文字幕| 久久理论片午夜琪琪电影网| 国产综合自拍| 久久婷婷亚洲| 亚洲国产专区校园欧美| 欧美成人一区二区| 亚洲精品中文字幕在线观看| 欧美久久久久久久久| 日韩网站在线| 欧美日韩国产精品专区| 一本久道久久综合中文字幕| 国产精品99免视看9| 亚洲欧美大片| 国产欧美亚洲精品| 久久人体大胆视频| 亚洲国产精品99久久久久久久久| 欧美成人国产| 中文一区二区| 国产精品亚洲不卡a| 欧美一区二区三区四区高清 | 亚洲国产精品一区二区久 | 国产精品理论片| 欧美一级在线亚洲天堂| 国产综合视频| 免费黄网站欧美| 日韩视频在线免费| 国产精品成人一区二区三区夜夜夜 | 国产麻豆日韩| 久久久精品视频成人| 在线欧美福利| 欧美日韩大片| 亚洲免费婷婷| 国产在线乱码一区二区三区| 久久香蕉精品| 99精品福利视频| 国产精品永久免费视频| 久久久爽爽爽美女图片| 亚洲日本在线视频观看| 欧美视频免费| 久久精品视频99| 日韩视频在线播放| 国产精品热久久久久夜色精品三区| 久久岛国电影| 91久久久久久久久久久久久| 欧美视频官网| 久久精品视频在线免费观看| 91久久久一线二线三线品牌| 久久精品91| 亚洲精品日本| 国产精品一区免费视频| 美国十次了思思久久精品导航| 日韩午夜一区| 国产午夜精品美女毛片视频| 欧美freesex8一10精品| 亚洲午夜91| 怡红院精品视频| 欧美日韩综合在线| 久久免费高清视频| 亚洲色诱最新| 在线成人激情| 国产精品免费看| 欧美不卡视频| 性伦欧美刺激片在线观看| 亚洲激情电影在线| 国产欧美日韩视频在线观看 | 激情欧美一区二区| 欧美日韩国产影院| 久久久久久久久岛国免费| 一本久道久久综合狠狠爱| 国产一区二区三区在线免费观看| 欧美精品videossex性护士| 欧美在线视频观看免费网站| 日韩网站在线看片你懂的| 极品少妇一区二区| 国产精品福利片| 欧美mv日韩mv国产网站app| 亚洲欧美一区二区三区在线| 亚洲人成免费| 国语自产精品视频在线看抢先版结局 | 在线观看不卡av| 国产精品亚洲视频| 欧美乱妇高清无乱码| 久久久久久97三级| 亚洲高清在线观看| 国产精品一区二区三区观看| 欧美精品久久久久久| 久久久久国产一区二区三区| 亚洲男人的天堂在线| 最新高清无码专区| 合欧美一区二区三区| 欧美99久久| 久久深夜福利| 午夜一区在线| 亚洲深夜福利在线| 亚洲日本欧美日韩高观看| 激情视频一区| 狠狠色香婷婷久久亚洲精品| 国产精品女主播| 欧美日韩精品免费看| 女女同性精品视频| 久久久免费精品| 久久精品亚洲热| 香蕉成人久久| 亚洲免费一区二区| 亚洲视频精选| 一区二区欧美日韩| 亚洲麻豆av| 亚洲日本中文字幕| 在线欧美日韩精品| 激情婷婷欧美| 国际精品欧美精品| 国产一区二区精品在线观看| 国产精品自拍在线| 欧美美女bb生活片| 欧美激情精品久久久久久免费印度 | 亚洲婷婷在线| 一区二区日韩欧美| 日韩视频一区二区在线观看 | 在线观看欧美成人| 一色屋精品亚洲香蕉网站|