date命令
date命令的功能是顯示和設定系統日期和時間。
該命令的一般格式為: date [選項] 顯示時間格式(以+開頭,後面接格式)
date 設定時間格式
命令中各選項的含義分別為:
-d datestr, --date datestr 顯示由datestr描述的日期
-s datestr, --set datestr 設定datestr 描述的日期
-u, --universal 顯示或設定通用時間 時間域
% H 小時(00..23)
% I 小時(01..12)
% k 小時(0..23)
% l 小時(1..12)
% M 分(00..59)
% p 顯示出AM或PM
% r 時間(hh:mm:ss AM或PM),12小時
% s 從1970年1月1日00:00:00到目前經曆的秒數
% S 秒(00..59)
% T 時間(24小時制)(hh:mm:ss)
% X 顯示時間的格式(%H:%M:%S)
% Z 時區 日期域
% a 星期幾的簡稱( Sun..Sat)
% A 星期幾的全稱( Sunday..Saturday)
% b 月的簡稱(Jan..Dec)
% B 月的全稱(January..December)
% c 日期和時間( Mon Nov 8 14:12:46 CST 1999)
% d 一個月的第幾天(01..31)
% D 日期(mm/dd/yy)
% h 和%b選項相同
% j 一年的第幾天(001..366)
% m 月(01..12)
% w 一個星期的第幾天(0代表星期天)
% W 一年的第幾個星期(00..53,星期一為第一天)
% x 顯示日期的格式(mm/dd/yy)
% y 年的最後兩個數字( 1999則是99)
% Y 年(例如:1970,1996等)
需要特別說明的是,只有超級使用者才能用date命令設定時間,一般使用者只能用date命令顯示時間。
下列環境變數將會影響到 date 命令的執行效果。 資料整理 www.linuxso.com LANG 確定在 LC_ALL 和相應的環境變數(以 LC_ 開頭)都不指定語言環境的時候將要使用的預設語言環境。 LC_ALL 確定用於覆蓋由 LANG 或任何以 LC_ 開頭的環境變數設定的任何語言環境類別值的語言環境。 LC_CTYPE 確定文本資料的位元組序列解釋為字元時使用的語言環境(例如參數中單對多位元組字元)。 LC_MESSAGES 決定寫資訊應使用的語言。 LC_TIME 確定由 date 寫入的日期和時間字串的內容。 NLSPATH 為處理 LC_MESSAGES 決定訊息目錄的位置。 TZ 指定時間和日期使用的時區,除非指定了 -u 選項。如果未設定 TZ 變數且未指定 -u 標誌,則使用非指定的系統預設時區。 使用樣本一:
#date //顯示當前日期
#date -s //設定目前時間,只有root許可權才能設定,其他只能查看。
#date -s 20061010 //設定成20061010,這樣會把具體時間設定成空00:00:00
#date -s 12:23:23 //設定具體時間,不會對日期做更改
#date -s “12:12:23 2006-10-10″ //這樣可以設定全部時間
CST:中國標準時間(China Standard Time),這個解釋可能是針對RedHat Linux。
UTC:國際標準時間,又稱世界標準時間,簡稱UTC,從英文國際時間/法文協調時間”Universal Time/Temps Cordonné”而來。中國大陸、香港、澳門、台灣、蒙古國、新加坡、馬來西亞、菲律賓、澳洲西部的時間與UTC的時差均為+8,也就是UTC+8。
GMT:格林尼治標準時間(舊譯格林威治平均時間或格林威治標準時間;英語:Greenwich Mean Time,GMT)是指位於英國倫敦郊區的皇家格林尼治天文台的標準時間,因為本初子午線被定義在通過那裡的經線。
設定完系統時間後,還需要同步到硬體時鐘上
# clock --systohc
硬體時鐘與系統時鐘同步:
# hwclock --hctosys
或者
# clock --hctosys
上面命令中,--hctosys表示Hardware Clock to SYStem clock。
系統時鐘和硬體時鐘同步:
# hwclock --systohc
或者
# clock --systohc
使用樣本二:
用指定的格式顯示時間。 $ date & lsquo;+This date now is =>%x , time is now =>%X ,thank you !' This date now is =>11/12/99 ,time is now =>17:53:01 ,thank you ! 用預定的格式顯示當前的時間。 # date Fri Nov 26 15:20:18 CST 1999 設定時間為下午14點36分。 # date -s 14:36:00 Fri Nov 26 14:15:00 CST 1999 設定時間為1999年11月28號。 # date -s 991128 Sun Nov 28 00:00:00 CST 1999 設定一天前 date --date "1 days ago" +"%Y-%m-%d" Date 命令參數小技巧 由於Linux對man date -d 參數說的比較模糊,故舉例如下: # -d, --date=STRING display time described by STRING, not `now' For Linux [root@linuxso.com ~ ]# date -d n ext-day +%Y%m%d 20060328 [root@linuxso.com ~ ]# date -d last-day +%Y%m%d 20060326 [root@linuxso.com ~ ]# date -d yesterday +%Y%m%d 20060326 [root@linuxso.com ~ ]# date -d tomorrow +%Y%m%d 20060328 [root@linuxso.com ~ ]# date -d last-month +%Y%m 200602 [root@linuxso.com ~ ]# date -d next-month +%Y%m 200604 [root@linuxso.com ~ ]# date -d next-year +%Y 2007 ------------------------------------------ 而FreeBSD則不同;舉例如下: For FreeBSD [root@linuxso.com ~]# date -v -1d +%Y%m%d 20060326 [root@linuxso.com ~]# date -v -1m +%Y%m%d 20060227 [root@linuxso.com ~]# date -v -1y +%Y%m%d 20050327 使用樣本三: 在linux環境下要取得幾天前的時期只要使用 date -d "x days ago" +%Y%m%d x用數字代替,如果需要幾天前的直接寫正數,如果要幾天后的日期直接寫負數即可; date -d "x weeks ago" +%Y%m%d x用數字代替,如果需要幾周前的直接寫正數,如果要幾周后的日期直接寫負數即可; date -d "x years ago" +%Y%m%d x用數字代替,如果需要幾年前的直接寫正數,如果要幾年後的日期直接寫負數即可; 看下面例子: [root@linuxso.com ~]# date +%Y%m%d 20100107 上面是今天的日期20100107 [root@linuxso.com ~]# date -d "2 days ago" +%Y%m%d 20100105 上面是兩天前的日期 [root@linuxso.com ~]# date -d "4 days ago" +%Y%m%d 20100103 上面是四天前的日期 [root@linuxso.com ~]# date -d "-1 days ago" +%Y%m%d 20100108 上面是一天后的日期 [root@linuxso.com ~]# date -d "-2 days ago" +%Y%m%d 20100109 上面是兩天后的日期 [root@linuxso.com ~]# date -d "1 week ago" +%Y%m%d 20091231 上面是一周前的日期 [root@linuxso.com ~]# date -d "1 year ago" +%Y%m%d 20090107 上面是一年前的日期 http://www.linuxso.com/command/date.html