ECS設定時區與時間
背景:目前在所有地域新建立ecs,系統預設使用的都是cst即UTC+8時區,那麼非東八區region如何正確的設定時間呢?下文將介紹ecs下設定時區的正確姿勢。
為了幫助大家更好理解,本文將分如下兩部分進行闡述:(如對時區,系統時間,硬體時間等概念熟知的可以直接跳過)
- 介紹時間,時區,utc標準,系統時鐘,硬體時鐘
- 講述在阿里雲ecs上配置時區與時間的正確姿勢
時間,時區,utc,硬體時間,系統時間介紹
時間
相信時間這一概念對於每一個人來說都再熟悉不過了,時間這一永恆的話題時常縈繞在每個人的腦中,那麼如果讓你來給時間下一個定義,什麼是時間?
上圖是百度百科對時間的定義,看了上圖是不是心中萬馬奔騰,但是有幾個關鍵詞可以get:
- 時間是物質的運動和能量的傳遞
- 國際單位制
- 時間的基本單位是秒
簡而言之:時間是物質變化的度量標準,國際上定義了一套通用的度量標準,基本單位是秒,其它單位還有有分,時。
下面我拋一個問題?大家知道全球有七大洲,193個國家,其地理,文化,政治,習慣差異甚大,那麼我們的“時間”如何統一?統一的時間標準在各個國家實施中又有哪些不同?下面我們將從時區開始展開來說
時區
相信大家對於時區的概念並不陌生,我們經常會聽東八區,北京時間xx點整,倒時差,對錶等概念,全球一共有24個時區(也可以說25個),它們是怎麼劃分的呢?為啥要存在這麼多時區,我們統一用一個時區不行嗎?這個就涉及到一個時區劃分到背景。
時區如何劃分?
大家知道地球自傳是自西向東,東邊的地方將比西邊的地方先看到地方,也就是說 東邊的時間要比西邊的早,為了方便度量地域之間的時間差,時區的劃分因勢而生。
1884年在華盛頓召開的一次國際經度會議(又稱國際子午線會議)上,規定將全球劃分為24個時區(東、西各12個時區)。規定英國(格林尼治天文臺舊址)為中時區(零時區)、東1-12區,西1-12區。每個時區橫跨經度15度,時間正好是1小時。
前文提到了時間,國際上時間度量標準有時分秒,地球自轉一天是23h56min4s,加上自轉同時的公轉時間3min56s,剛好是24h,
按經度將地區劃分為24個時區,那麼360/24=15,那麼經度每相差15度時間就相差一個小時,越靠東時間越早。
下圖是世界的時區劃分
我國橫跨了東5-9共五個時區, 可為啥我國只有東八區的時間(標準北京時間)一個標準?
簡而言之:方便,政治,經濟三個因素。(大家慢慢琢磨 ⊙▽⊙)
弱弱的說一下烏魯木齊時間還是存在的。假設國家的某單位都按照北京時間8點開始上班,此時的新疆還沒有拂曉~
是不是可以統一時區?
理論上是可以的,完全可以使用utc時間(時間標準時間,下文有介紹),我國地域遼闊橫跨五大時區同時實施東八區的時間看起來也是好好的啊。
如果放眼全球,大到國家,小到地區,習慣,文化等均是不同的,沒有任何必要強制改變別人的時間習慣與認知。且不說統一時區的問題,簡單的夏令時僅僅是把時鐘調快一小時這一個相對較小的改變在美國仍然沒有得到全部覆蓋。
UTC及其它時間介紹
上文提到了為了度量地域間時間差,我們進行了劃分時區,僅僅靠時區劃分是不足以表達標準時間的,於是utc產生了。
UTC 時間標準時間
UTC 是 Coordinated Universal Time 的縮寫,譯為中文為“世界標準時間”,可以理解為標準時間的參考,比如北京時間可以表達為UTC+8,太平洋時間UTC-8,可以簡單理解utc是其它時間的參考標準。
GMT 格林威治平時
GMT 是 Greenwich Mean Time 的縮寫,譯為中文為“格林威治標準時間”或“格林尼治標準時間”,直譯的話,可譯為“格林威治平時”或“格林尼治平時”, 目前來說可以理解為GMT等價於UTC
為啥說是目前指 GMT 時間呢?因為本初子午線(子午線即經線,本初子午線即 0 度經線)其實穿過的是沙烏地阿拉伯西邊的麥加,而不是英國的格林威治。
當時英國皇家學會暫時確定格林威治為本初子午線的穿過點﹐加之英國正是興旺發達時期,全世界就將錯就錯,用到現在。
說不定哪天改為麥加時間為標準時間也不是沒有可能。所以我們使用UTC更加準確。
可以理解為GMT=UTC+0
CST,PST
CST: UTC +8 ,可以同時表示美國,澳大利亞,中國,古巴四個國家的標準時間
PST: UTC -8,太平洋標準時間(西八區)
DST(夏令時)
Daylight Saving Time,夏日節約時間
是指在夏天太陽升起的比較早時,將時鐘撥快一小時,以提早日光的使用,在英國則稱為夏令時間(Summer Time),實施夏令時主要目的是為了節約能源。
夏令時比冬令時時間快一小時
中國目前沒有實施夏令時,歷史上1986-1992曾短暫實施
硬體時鐘與系統時鐘
Linux時鐘分為系統時鐘(System Clock)和硬體(Real Time Clock,簡稱RTC)時鐘。
- 系統時鐘是指當前Linux Kernel中的時鐘,當Linux啟動時,硬體時鐘會去讀取並且設定系統時鐘
- 硬體時鐘是主機板上由電池供電的時鐘,這個硬體時鐘可以在BIOS中進行設定。
linux中所有的命令都是使用系統時鐘
系統時鐘和硬體時鐘不會發生衝突,可以不一致
時間檢視與修改
系統時間
- date 檢視本地時間
- date -u 檢視utc時間
- date -R 檢視時區
- date –set “07/07/06 10:19″ (月/日/年時:分:秒)
硬體時間
hwclock/clock
- hwclock –show
- clock –show
- hwclock –set –date=”mm/dd/yy 10:19″ (月/日/年 時:分:秒)
- clock –set –date=”07/07/06 10:19″ (月/日/年 時:分:秒)
硬體時間和系統時間的同步
-
手動同步
- 硬體時鐘與系統時鐘同步:hwclock –hctosys(hc代表硬體時間,sys代表系統時間)
- 系統時鐘和硬體時鐘同步:hwclock –systohc
-
系統啟動與關閉自動同步
-
開啟utc(/etc/sysconfig/clock 中 UTC=true)
- 開機:BIOS ▶ UTC時區轉換 ▶ 系統時間
- 關機:系統時間 ▶ UTC時區轉換 ▶ BIOS
-
關閉utc
- 開機:BIOS ▶ 系統時間
- 關機:系統時間 ▶ BIOS
-
NTP
NTP(Network Time Protocol,網路時間協議)是用來使網路中的各個計算機時間同步的一種協議。它的用途是把計算機的時鐘同步到UTC。Linux系統中,為了避免主機時間因為在長時間執行下所導致的時間偏差,一般使用ntp服務來同步不同機器的時時間。
Ecs設定時區與時間
ecs目前所有地域新建立的例項預設使用的時區都是cst即utc+8,如下圖所示我新購的ecs是美西地域:
使用終端登入ecs,檢視時間與時區,可以看到當前美西的ecs使用的是CST時間,當前時間為北京時間!
那麼一個處於其它時區的ecs如何切換至本地時區/時間?下面將按照linux/windows為例子,進行講述。
Linux
我們仍然以上文linux例項為例,假設我處於美國的洛杉磯,想使用洛杉磯所處的utc時區,那麼我們需要修改當前系統時區,
時區配置
- 檢視當前系統時區
cat /etc/localtime
如上文所及是CST時間東八區
- 修改當前時區
rm -rf /etc/localtime
ln -s /usr/share/zoneinfo/US/Pacific /etc/localtime
可以看到時區已經切換至PST(西八區時間),且時間比北京時間慢了16個小時!
執行 hwclock -w將時間刷到硬體時鐘,執行reboot
- 重啟系統
god bless!可以看到ecs時區已經成功設定到PST (西八區太平洋標準時間,utc-8)!
時間配置
如果僅僅是時間不準,我只想修改一下時間呢?也是可以的
比如我想調快時間,設定為16:00:00
執行hwclock -w 然後我們reboot一下os
可以看到時間已經被設定為預期值了!我們需要做的僅僅是修改系統時間!
windows
下面是我在美西新建立的windows例項
- 檢視時區/時間
可以看到如預期預設時間在UTC+8,下面我們修改一些時區
- 修改時區為太平洋時間
夏令時
前文說到為了節約時間有很多國家與地區在實時夏令時,這個時候就會發現奇怪的事情,比如美西使用太平洋時間,我國使用東八區時間,理論上時間差是16小時,但是如果在美國的夏令時你會發現實際相差時間只有15小時,因為夏令時時間會撥快一個小時。
下圖是美國近幾年的夏令時時間開始與結束時間圖:
美國的大部分地區都在實施夏令時,週期一般是3月10-11.5號左右,因為經度不同導致日照時間不同,實施夏令時的
各個國家及地區時間均不同,同時也受當地經濟,文化等因素影響。
windows 夏令時配置
windows下可以設定是否開啟自動調整夏令時,預設會是開啟狀態,如果時區開始夏令時那麼時間將會自動調快一個小時!
相關文章
- Linux設定和修改時間與時區Linux
- Ubuntu、CentOS修改時區、設定24小時時間格式教程。UbuntuCentOS
- Nodered學習記錄-時間戳和時區設定時間戳
- Linux時間設定系統時間、硬體時間和時間服務Linux
- jvmlinux時區設定JVMLinux
- 時間戳與時間字串的多時區轉換時間戳字串
- MyBatis自動設定建立時間和更新時間MyBatis
- Azure Function 時區設定Function
- Docker映象時區設定Docker
- 掌握時間與空間:深入探討Golang中的時間戳與時區轉換Golang時間戳
- Ubuntu 時間不準,怎麼設定NTP時間同步?Ubuntu
- WinAppDriver 等待時間設定技巧APP
- localStorage設定過期時間
- linux系統時間設定Linux
- js時間顯示設定JS
- Linux設定系統時間Linux
- localStorage設定儲存時間
- redis設定過期時間Redis
- php 根據給定字串時間獲取時區PHP字串
- MySQL中的時區設定MySql
- 設定openjdkdocker容器的時區JDKDocker
- MongoDB常見問題解答:時間與時區MongoDB
- win10要如何設定更新時間_win10怎麼設定更新時間Win10
- 積木報表設定時間
- JavaScript 設定cookie 過期時間JavaScriptCookie
- layui laydate日期時間範圍,時間預設設定為23:59:59UI
- 【Python】Python 使用http時間同步設定系統時間原始碼PythonHTTP原始碼
- JS判定一個給定的時間區間在哪些時間段範圍內JS
- 2.5.10.1 設定資料庫時區資料庫
- Django的時區設定問題Django
- 電腦螢幕時間長短在哪裡設定 電腦螢幕息屏時間設定
- JS設定時間格式為2010-01-01,以及時間加減JS
- element-ui 時間選擇器設定時間選擇範圍UI
- mongodb中如何設定當前時間?MongoDB
- 如何在 Ubuntu 上設定時間同步Ubuntu
- PHPUNIT MOCK設定時間 expectation 覆蓋PHPMock
- ubuntu 修改時區或時間 及網路同步時間Ubuntu
- win10 時間怎麼設定24小時格式_win10如何設定24小時制Win10
- # 2020-10-06 #「Linux」- 時區設定Linux