在日常開發中,長期是在從事后端服務器開發,也避免不了會經常和時間打交道,例如:
玩家的首次登錄時間玩家的最后登錄時間活動的開啟時間和結束時間
而這些時間在程序中的表示就是用一個數字,我們把這個數字稱為時間戳(Timestamp)。
更多的情況下,我們是用一個整型數字來表示這個時間戳。
每一個不同的整型數字都有不同的含義,他們都代表一個獨一無二的時間,例如:
0 : 代表 1970年的元旦節(1970.1.1 00:00:00 UTC) 60 : 代表 1970年元旦節剛過一分鐘(1970.1.1 00:00:60 UTC) 3600 : 代表 1970年元旦節過去一個小時了(1970.1.1 01:00:00 UTC) 43200 : 代表 1970年元旦節午餐時間到了(1970.1.1 12:00:00 UTC) 86400 : 代表 1970年元旦節過完了(1970.1.2 00:00:00 UTC)
結合上面的例子,對時間戳(Timestamp)的定義就清晰明了了,時間戳是一個數字,這個數字代表的是從1970年元旦節(1970.1.1 00:00:00)所經過(流逝)的秒數。
明確了這個概念,如果我們再看到一個數字,并且知道它就是代表一個時間戳,那我們應該會迫不及待的想把它轉換成它代表的時間。
中話
其實我只是想記錄一下Linux/Unix系統下關于date命令行工具的使用指南,不料卻回憶了一下關于時間戳的簡要概念。
事情的由來是,在很長一段時間內,我在拿到一個時間戳并且想看看這個時間戳究竟是具體的哪一天哪一年甚至于哪一分哪一秒的時候(通常在程序出現問題需要定位和時間有關的BUG的時候)。我都會習慣性的打開某搜索引擎然后輸入時間戳這個關鍵詞進行搜索,然后熟練的點擊搜索結果的第一條Unix時間戳轉換工具,直到某一天我覺得要糾正掉這個不好的習慣,我才開始試著去使用date這個Linux/Unix系統標配命令行工具去完成這個日常操作。哈哈,只能略表慚愧,我居然沒有把這個這么好用的網站給收藏到瀏覽器的頂部欄!
正題時間戳 -> 日期
和往常一樣,我在調試的過程中發現了一個可疑的時間戳,它的數值是1506787200,我需要知道這個時間戳是對應的哪個具體日期,所以我又熟練的打開了某搜索引擎輸入了時間戳........
其實我這次是打開了Mac系統終端(Terminal),然后輸入了如下命令:
date -r 1506787200
這個命令以最快的速度也給予了我準確的反饋輸出:

從這一刻起,我感覺我自己終于擺脫了我的壞習慣,所以我覺得有必要多操作幾次以達到強化的目的,于是我又熟練的依次輸入了如下的命令:
date -r 0date -r 60date -r 3600date -r 43200date -r 86400
這些命令如饑似渴的以最快的速度分別的給予了我準確的反饋輸出:

從這一刻起,我感覺我自己已經熟練掌握了date -r的奧義,就在我欣喜如狂之際,我的旁光突然掃描到date -r 0這個命令的輸出: 1970年 1月 1日 星期四 08時00分00秒 CST,為什么是早上8時,和我在前話中提到的0代表1970年1月1日0時0分0秒有些出入呢。
其實這是一個誤會,時間戳:0確實是代表1970年1月1日0時0分0秒,但是是代表零時區(UTC+0)的1970年1月1日0時0分0秒,還好我也是學過地理的,知道我們偉大的祖國幅員遼闊,地大物博,光時區就橫跨了5個,而且全國統一使用首都北京所在時區東八區(UTC+8)的時間。
因為我的電腦系統設置的時區是東八區的緣故,這個date
新聞熱點
疑難解答