伺服器時區應該設定成UTC時間嗎?

2021-09-02 12:55:58 字數 726 閱讀 2056

傳輸與儲存的時間戳只應該是utc時間、展示時間時必須指定時區,這個兩個原則同等重要

遵守了這兩個原則,就不會受系統時區設定的影響

先理清時間與時區的基礎概念:

時間的儲存值(utc long) + 時區   -->轉換成--> 時間的表現值(local string)

同時糾正乙個經常有人犯的錯誤,把這個值用來交換: 時間的儲存值(utc long) + 時區  =  時間的本地值(local long)

傳輸與儲存時間值的時候local long是乙個不應該存在的概念,乙個引起混亂的罪魁,此點切記!

在交換時間資料的時候,如果時區不重要或者相同,那麼交換時間的儲存值還是交換時間的表現值是等效的,如果雙方對時區敏感(需要展現不同時區的表現值),那麼引起混亂的原因通常是直接交換時間的表現值(local string)或者時間的儲存值,卻不交換時區值。

例項1:

例項2:

伺服器時區的設定不影響伺服器時間儲存值,只影響時間的表現值。對於服務多個國家的伺服器,你把時區設定成任何乙個國家的時區都會造成某些人的糾結,但這並沒有什麼關係,重要的是,你不要把應該儲存成時間+時區兩個欄位的值只儲存成乙個字段,引起問題的是資料的降緯,而不是伺服器時區設定造成的。作為時間表現值的伺服器時區設定,應當設定成伺服器運維者所在的時區,而非伺服器所服務的使用者的眾多國家中的任何乙個,同理也不應當是utc。(你有兩個孩子,要分兩個梨,乙個大乙個小爭執不下,難道你會將兩個梨子都給旁邊看熱鬧的小孩--utc來解決這個問題麼?)

將MongoDB伺服器設定成Windows啟動服務

1.安裝完畢之後,預設安裝在 c program files mongodb下面,bin目錄的完整路徑為 c program files mongodb server 3.4 bin 2.開啟cmd 普通開啟或者管理員開啟均可 輸入命令cd c program files mongodb serve...

將伺服器設定成路由器

建立路由檔案 在 etc sysconfig network scripts 資料夾下為eth0這張網絡卡建立路由表名為route eth0,這個檔案預設不存在需要我們手工建立 新增 最終目的網段 下一站 通過那兒張網絡卡 30.0.0.0 24 via 20.0.0.2 dev eth0 重啟服務...

伺服器端世界時間 UTC 轉換客戶端時區時間

當你的伺服器是針對世界各地使用者提供服務的時候,如果正好你想正確顯示伺服器的時間。那麼你應該獲取正確的伺服器時間並轉化成客戶端本地時間的時間在客戶端顯示與呼叫。而不應該像 鐵路購票系統 一樣直接使用客戶端的本地時間而出現一系列有趣的 那麼我們應該如何將伺服器的協調世界 utc 時間轉換成我們客戶端所...