2023年9月28日 星期四

使用「世界協調時間(UTC)」作為時間戳

有時候一些情境上會需要夾帶時間戳,用來判斷是否在有效的時間區間,應用情境較為常見的

有 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




【參考】

沒有留言:

張貼留言