date --help
用法:date [選項]... [+格式]
或:date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
以給定的格式顯示目前時間,或是設定系統日期。
-d,--date=字元串 顯示指定字元串所描述的時間,而非目前時間
-f,--file=日期檔案 類似--date,從日期檔案中按行讀入時間描述
-r, --reference=檔案 顯示檔案指定檔案的最後修改時間
-R, --rfc-2822 以RFC 2822格式輸出日期和時間
例如:2006年8月7日,星期一 12:34:56 -0600
--rfc-3339=TIMESPEC 以RFC 3339 格式輸出日期和時間。
TIMESPEC=`date‘,`seconds‘,或 `ns‘
表示日期和時間的顯示精度。
日期和時間單元由單個的空格分開:
2006-08-07 12:34:56-06:00
-s, --set=字元串 設定指定字元串來分開時間
-u, --utc, --universal 輸出或者設定協調的通用時間
--help 顯示此幫助資訊并退出
--version 顯示版本資訊并退出
給定的格式FORMAT 控制着輸出,解釋序列如下:
%% 一個文字的 %
%a 目前locale 的星期名縮寫(例如: 日,代表星期日)
%A 目前locale 的星期名全稱 (如:星期日)
%b 目前locale 的月名縮寫 (如:一,代表一月)
%B 目前locale 的月名全稱 (如:一月)
%c 目前locale 的日期和時間 (如:2005年3月3日 星期四 23:05:25)
%C 世紀;比如 %Y,通常為省略目前年份的後兩位數字(例如:20)
%d 按月計的日期(例如:01)
%D 按月計的日期;等于%m/%d/%y
%e 按月計的日期,添加空格,等于%_d
%F 完整日期格式,等價于 %Y-%m-%d
%g ISO-8601 格式年份的最後兩位 (參見%G)
%G ISO-8601 格式年份 (參見%V),一般隻和 %V 結合使用
%h 等于%b
%H 小時(00-23)
%I 小時(00-12)
%j 按年計的日期(001-366)
%k 時(0-23)
%l 時(1-12)
%m 月份(01-12)
%M 分(00-59)
%n 換行
%N 納秒(000000000-999999999)
%p 目前locale 下的"上午"或者"下午",未知時輸出為空
%P 與%p 類似,但是輸出小寫字母
%r 目前locale 下的 12 小時時鐘時間 (如:11:11:04 下午)
%R 24 小時時間的時和分,等價于 %H:%M
%s 自UTC 時間 1970-01-01 00:00:00 以來所經過的秒數
%S 秒(00-60)
%t 輸出制表符 Tab
%T 時間,等于%H:%M:%S
%u 星期,1 代表星期一
%U 一年中的第幾周,以周日為每星期第一天(00-53)
%V ISO-8601 格式規範下的一年中第幾周,以周一為每星期第一天(01-53)
%w 一星期中的第幾日(0-6),0 代表周一
%W 一年中的第幾周,以周一為每星期第一天(00-53)
%x 目前locale 下的日期描述 (如:12/31/99)
%X 目前locale 下的時間描述 (如:23:13:48)
%y 年份最後兩位數位 (00-99)
%Y 年份
%z +hhmm 數字時區(例如,-0400)
%:z +hh:mm 數字時區(例如,-04:00)
%::z +hh:mm:ss 數字時區(例如,-04:00:00)
%:::z 數字時區帶有必要的精度 (例如,-04,+05:30)
%Z 按字母表排序的時區縮寫 (例如,EDT)
預設情況下,日期的數字區域以0 填充。
以下可選标記可以跟在"%"後:
- (連字元)不填充該域
_ (下劃線)以空格填充
0 (數字0)以0 填充
^ 如果可能,使用大寫字母
# 如果可能,使用相反的大小寫
在任何标記之後還允許一個可選的域寬度指定,它是一個十進制數字。
作為一個可選的修飾聲明,它可以是E,在可能的情況下使用本地環境關聯的
表示方式;或者是O,在可能的情況下使用本地環境關聯的數字元号。
請向[email protected] 報告date 的錯誤
GNU coreutils 項目首頁:<http://www.gnu.org/software/coreutils/>
GNU 軟體一般性幫助:<http://www.gnu.org/gethelp/>
請向<http://translationproject.org/team/zh_CN.html> 報告date 的翻譯錯誤
要擷取完整文檔,請運作:info coreutils ‘date invocation‘
例如
以YYMMDD格式先知目前日志
[root@localhost ~]# date ‘+%Y%m%d‘
20140514
[root@localhost ~]# date "+ %Y_%m_%d"
2014_05_14
tar 壓縮包以目前日期時間指令
[root@localhost ~]# touch 1.test
[root@localhost ~]# tar zcfv `date ‘+%Y%m%d‘`_test.tar.gz 1.test
1.test
[root@localhost ~]# ls
1.test 20140514_test.tar.gz
[root@localhost ~]# tar zcfv `date ‘+%F‘`test.tar.gz 1.test
1.test 2014-05-14test.tar.gz 20140514_test.tar.gz
我們一般使用“date -s”指令來修改系統時間
比如将系統時間設定成2011年7月13日的指令:date -s 07/13/2011
将系統時間設定成11點12分0秒的指令:date -s 11:12:00
注意:這裡說的是系統時間,是linux由作業系統維護的。
在系統啟動時,Linux作業系統将時間從CMOS中讀到系統時間變量中,以後修改時間通過修改系統時間實作。為了保持系統時間與CMOS時間的一緻性,Linux每隔一段時間會将系統時間寫入CMOS。由于該同步是每隔一段時間(大約是11分鐘)進行的,在我們執行date -s後,如果馬上重起機器,修改時間就有可能沒有被寫入CMOS,這就是問題的原因。
如果要確定修改生效可以執行如下指令。
#clock –w
這個指令強制把系統時間寫入CMOS。
因為日期和時間很重要,這或許就是開發網絡時間協定(NTP:Network Time Protocol)的原因。讓我們了解下date指令是如何工作的。
要顯示系統日期,隻要輸入:
日期有很多格式。如果你不喜歡預設的格式,你可以換一種格式。你可能會想"為什麼我需要改變格式? 預設的輸出對我足夠了。"
是的,你說的對,但是當你在程式設計時,預設輸出或許無法滿足你的需求,是以需要一些自定義輸出。
RFC 2822 的格式像這樣 : 星期, 日-月-年, 小時:分鐘:秒 時區
時區 +0700 等同于 GMT +7。
預設上date使用的是定義在/etc/localtime的時區。有效時區資料定義在/usr/share/timezones。
在 上, UTC 意思是
世界上主要的時鐘和時間的标準。這是格林位置标準時間幾個非常相近的替代者之一。
以UTC形式顯示日期和時間, 使用 -u 參數
要自定義你的日期格式, 使用加号 (+)
%D 格式是 年/月/日 的格式.
如果你想的話,你可以輸出日期的名字。下面是一些例子:
還有很多的日期格式。隻要輸入:
或者
來顯示date指令的文法和參數。
基本上,date指令會翻譯所有所有的百分号(%)開頭的格式和輸出在引号("")内所有的内容。
通常地,你希望你的系統日期和時間是自動設定的。如果由于一些原因,你想要手動修改它,我們可以使用這個指令。
這會設定你目前的系統日期和時間到一月 25, 2014 and 09:17:00 AM。請注意,你必須擁有root特權來這麼做。不然你會得到這樣一個錯誤。
如果你希望重置你的系統日期和時間到原始值,你可以用這個技巧。
這回設定你的系統日期和時間到hwclock指令的輸出的樣子。
還記得我之前說為什麼你需要改變date的輸出麼?一個答案是你或許需要程式設計。讓我們看下bash腳本下的一個例子。
儲存并運作它:
如果你發現權限拒絕錯誤資訊,輸入:
另外一個例子是子你備份流程中使用date。
它會壓縮檔案夾/home/pungki/Documents到一個位于/daily_backup folder的檔案backup-2013-12-06.tar.gz中。(譯注:通過“` 指令 `”來在指令行内嵌其它指令,這個字元不是單引号,而是和波浪号~同一個鍵位的那個符号。)
date可能被認為在某些方面不重要。但是date扮演了一個重要的角色。要想知道關于date指令更多的細節,在你的控制台下輸入man date通路man頁面。
本文出自 “” 部落格,請務必保留此出處