有時候一些情境上會需要夾帶時間戳,用來判斷是否在有效的時間區間,應用情境較為常見的
有 token 的有效期限;而時間戳的選擇當屬「世界協調時間(UTC)」 最為準確,放諸四海皆準
何謂「世界協調時間(UTC)」?就讓 wiki 來說明,以下節錄至 wiki 內容
世界協調時間(英語:Coordinated Universal Time,法語:Temps Universel Coordonné,簡稱UTC)是最主要的世界時間標準,其以原子時的秒長為基礎,在時刻上儘量接近於格林威治標準時間
如果本地時間比UTC時間快,例如中國大陸[註 1]、香港、澳門、臺灣、蒙古國、菲律賓、新加坡、馬來西亞、澳洲西部的時間比UTC快8小時,就會寫作UTC+8,俗稱東八區。相反,如果本地時間比UTC時間慢,例如夏威夷的時間比UTC時間慢10小時,就會寫作UTC-10,俗稱西十區。
由以上得知,UTC 已經取代 格林威治標準時間(GMT),UTC+8 等於台灣本地時間
而我們又該如何取得當下的 UTC 時間並且為秒數總和,先來看一個網站
這個網站,中間部分你會看到當下進來的 UTC Timestamp ,並且上方也有持續在跑的秒數,
下方則是GMT 的表示時間,也可切換為當下時區的表示時間
而時間戳會以1970年01月01日00時00分00秒起到現在的總秒數,時間戳的特性是,不管在哪個時區,
當下算出的時間戳都會是同樣的數值
再來,如何透過程式取得 utc 的時間,可以透過以下方法,計算當前UTC時間和1970年1月1日之間的
時間間隔,並取得時間間隔的總秒數
(int)DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).TotalSeconds
而在還原時,需要帶上當地的時區,如台灣就是+8
【參考】
沒有留言:
張貼留言