共計 3818 個字符,預計需要花費 10 分鐘才能閱讀完成。
這篇文章主要介紹“Unix 時間和時間戳的命令行怎么寫”,在日常操作中,相信很多人在 Unix 時間和時間戳的命令行怎么寫問題上存在疑惑,丸趣 TV 小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Unix 時間和時間戳的命令行怎么寫”的疑惑有所幫助!接下來,請跟著丸趣 TV 小編一起來學習吧!
事情的由來是,在很長一段時間內,我在拿到一個時間戳并且想看看這個時間戳究竟是具體的哪一天哪一年甚至于哪一分哪一秒的時候(通常在程序出現問題需要定位和時間有關的 bug 的時候)。我都會習慣性的打開某搜索引擎然后輸入時間戳這個關鍵詞進行搜索,然后熟練的點擊搜索結果的第一條 unix 時間戳轉換工具, 直到某一天我覺得要糾正掉這個不好的習慣,我才開始試著去使用 date 這個 linux/unix 系統標配命令行工具去完成這個日常操作。哈哈,只能略表慚愧, 我居然沒有把這個這么好用的網站給收藏到瀏覽器的頂部欄!
正題時間戳 – 日期
和往常一樣,我在調試的過程中發現了一個可疑的時間戳,它的數值是 1506787200, 我需要知道這個時間戳是對應的哪個具體日期,所以我又熟練的打開了某搜索引擎輸入了時間戳。
其實我這次是打開了 mac 系統終端(terminal), 然后輸入了如下命令:
date -r 1506787200
這個命令以最快的速度也給予了我準確的反饋輸出:
從這一刻起,我感覺我自己終于擺脫了我的壞習慣,所以我覺得有必要多操作幾次以達到強化的目的,于是我又熟練的依次輸入了如下的命令:
date -r 0
date -r 60
date -r 3600
date -r 43200
date -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 命令在默認情況下也是根據系統的時區優先顯示所在時區的換算后的本地時間。以至于出現剛才的情況,虛驚一場。
為了驗證剛才的推論,我打算重新操作一次,并且加上了一個神秘的參數 -u,這個參數的作用很簡單,就是以零時區 (utc+0) 為標準輸出時間,輸入的命令如下:
date -u -r 0
date -u -r 60
date -u -r 3600
date -u -r 43200
date -u -r 86400
這些命令欣慰的以最快的速度分別的給予了我預料中的反饋輸出:
從這一刻起,雖然我感覺到我的功力再次上了一個臺階,但在這個時候我覺得我應該稍微停頓一下我的腳步,來追憶一下往昔的時光。
于是我飛快的將這個熟悉又遙遠的日期輸入到命令中:
date -j 071303001998
命令給予了一個輸出:
1998年 7 月 13 日 星期一 03 時 00 分 00 秒 cst
#法蘭西世界杯決賽開始的北京時間
上面的命令中,我輸入的是 date -j 071303001998, 其中的 - j 參數代表的是不要將他后面的那個日期字符串設置為當前系統時間,而只是將它以更友好的 1998 年 7 月 13 日 星期一 03 時 00 分 00 秒 cst 這種形式輸出。簡單點說也就是如果我不加 - j 參數,那么 date 071303001998命令會直接把我的電腦系統的當前時間設置為 1998 年那個夏天的 7 月 13 日凌晨 3 點,而不是在屏幕上輸出那個時間。
但是我提供的 071303001998這個字符串其實就是月日時分年的格式,07 是 7 月,13 是 13 日,03 是凌晨 3 點,00 是 0 分,1998是什么還用說么,我知道準確的日期,然后輸入到這個 date -j 071303001998命令中,顯然不是為了讓它輸出告訴我 1998 年 7 月 13 日 星期一 03 時 00 分 00 秒 cst 這個只是更好讀的同樣的日期,我是出于強烈的好奇想要知道這個偉大的時間的時間戳,所以我必須還要動點手腳:
date -j 071303001998 +%s
這次的命令只輸出了一個數字,這個數字就是我想知道的那個時間戳:
900270000
得到了時間戳,我又迫不及待的使用如下命令:
date -r 900270000
命令再一次的快速輸出了:
1998年 7 月 13 日 星期一 03 時 00 分 00 秒 cst
經過這一些列的操作,我不光學習到了新的參數 -j, 還再次溫故了 - r 參數的用法,更重要的是我完成了對過往美好時光的追憶,可謂一石三鳥,大快人心。
格式化
前面的命令雖然用得很溜了,但是它們的輸出都略顯冗長,雖然很智能的根據我是中文用戶給予了中文輸出的最高待遇,但我覺得很普通~ 我現在迫切的希望改變它的輸出的格式以彰顯我獨特的個性與品味,于是我又開始了我的操作,我現在顯然還沉浸在剛在的追憶中,所以我還是打算用 900270000 這個代表 1998 年夏天的 7 月 13 日凌晨 3 點整的這個有特殊意義的時間戳來完成我的操作:
date -r 900270000 +%y
它給予了我一個簡單輸出作為回應:
1998
我有些小激動,仿佛找到一些竅門,繼續輸入:
date -r 900270000 +%m
它再次給予了我一個更簡潔的回應:
07
我更加激動,毫不猶豫的輸入:
date -r 900270000 +%d
它果然沒有讓我失望,給予了我預料中的回應:
13
經過三次嘗試,我嘗到了成功的滋味,我覺得這個時候應該乘勝追擊,于是我決定將 %y,%m,%d 放在一起,我的第六感告訴我,我會再次獲得成功:
date -r 900270000 +%y%m%d
結果顯而易見, 年月日一起出現在了屏幕上:
19980713
我還不滿足,我想獲取更多的成就感,我想輸出的格式更加的國際化, 我繼續嘗試:
date -r 900270000 +%m/%d/%y
結果達到我的初步要求:
07/13/1998
我依然不滿足,因為我想起了王菲和那英所唱的那首紅遍大江南北的歌曲《相約 98》,我覺得我也要顯示 98 而不是 1998,在那個年代,沒有人會說1998 年,所以我再次摸索并嘗試:
date -r 900270000 +%m/%d/%y
大寫變小寫,腐朽化神奇:
07/13/98
我果然還是不滿足,心里想著如果能在后面附加上具體的時間那我應該就會收手了,于是我又一氣呵成的輸入了如下命令:
date -r 900270000 +%m/%d/%y %h:%m:%s
心里想著就快完成這次愉快的操作之旅時,現實卻讓我嘗到了失敗的味道:
date: illegal time format
在最后關頭居然發生了意外著實讓我有些不太爽快,但是憑借我大學英語四級的扎實基礎,我還是從報錯信息中領悟出了一些端倪,再結合我多年的工作經驗,我感覺應該是我新增加的那段為了輸出時分秒的格式字符串 %h:%m:%s 所造成的。我隱約感覺到應該是它之前的那個空格導致了 date 命令在讀取的時候誤以為它們是兩個獨立的字符串。這種時候,按照慣例應該需要用傳說中的雙引號 將它們包圍在一起,以表示它們是一個整體。于是我重新整理了命令:
date -r 900270000 +%m/%d/%y %h:%m:%s
這次終于可以收工了,完美的輸出,完美的夜晚,再也回去不的 98:
07/13/98 03:00:00
做個總結常用命令行 date
默認格式輸出當前日期。date +%y%m%d%h%m%s
自定義格式 %y%m%d%h%m%s 輸出當前日期 date -r 900270000
默認格式輸出時間戳:900270000對應日期 date -r 900270000 +%y%m%d%h%m%s
自定義格式 %y%m%d%h%m%s 輸出時間戳:900270000對應日期 date -j 071303001998
默認格式輸出日期字符串:071303001998對應的日期 date -j 071303001998 +%y%m%d%h%m%s
自定義格式 %y%m%d%h%m%s 輸出日期字符串:071303001998對應的日期 date -j 071303001998 +%s
自定義格式 %s 輸出日期字符串:071303001998對應的日期的時間戳 格式字符串含義
注意大小寫代表完全不同的含義
%y : 年 (year) %y : 年(year) 后兩位 %m : 月(month) %d : 日(day) %h : 時(hour) %m : 分(minute) %s : 秒(second) %s : 時間戳(stamp) 日期字符串默認格式
月日時分年(07 13 03 00 1998)
那些逝去的時間戳900270000 1157040000 967737600 778348800 555087600 1430136000 1461758400 1493222400 1277913600
到此,關于“Unix 時間和時間戳的命令行怎么寫”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注丸趣 TV 網站,丸趣 TV 小編會繼續努力為大家帶來更多實用的文章!