date 命令詳解

xie仗劍天涯發表於2017-02-28

date命令是顯示或設定系統時間與日期。

date日期可以以多種格式去列印,也可以使用命令設定固定的格式.

語法選項

-d<字串>:顯示字串所指的日期與時間。字串前後必須加上雙引號; 
-s<字串>:根據字串來設定日期與時間。字串前後必須加上雙引號; 
-u:顯示GMT; 
--help:線上幫助; 
--version:顯示版本資訊。

引數

<+時間日期格式>:指定顯示時使用的日期時間格式。

日期格式字串列表

%H 小時(以00-23來表示)。 
%I 小時(以01-12來表示)。 
%K 小時(以0-23來表示)。 
%l 小時(以0-12來表示)。 
%M 分鐘(以00-59來表示)。 
%P AM或PM。 
%r 時間(含時分秒,小時以12小時AM/PM來表示)。 
%s 總秒數。起算時間為1970-01-01 00:00:00 UTC。 
%S 秒(以本地的慣用法來表示)。 
%T 時間(含時分秒,小時以24小時制來表示)。 
%X 時間(以本地的慣用法來表示)。 
%Z 市區。 
%a 星期的縮寫。 
%A 星期的完整名稱。 
%b 月份英文名的縮寫。 
%B 月份的完整英文名稱。 
%c 日期與時間。只輸入date指令也會顯示同樣的結果。 
%d 日期(以01-31來表示)。 
%D 日期(含年月日)。 
%j 該年中的第幾天。 
%m 月份(以01-12來表示)。 
%U 該年中的週數。 
%w 該周的天數,0代表週日,1代表週一,異詞類推。 
%x 日期(以本地的慣用法來表示)。 
%y 年份(以00-99來表示)。 
%Y 年份(以四位數來表示)。 
%n 在顯示時,插入新的一行。 
%t 在顯示時,插入tab。 
MM 月份(必要) 
DD 日期(必要) 
hh 小時(必要) 
mm 分鐘(必要)
ss 秒(選擇性)

使用說明

格式設定為一個加號後接數個標記,其中可用的標記列表如下: % : 列印出 %:

%n : 下一行
%t : 跳格
%H : 小時(00..23)
%I : 小時(01..12)
%k : 小時(0..23)
%l : 小時(1..12)
%M : 分鐘(00..59)
%p : 顯示本地 AM 或 PM
%r : 直接顯示時間 (12 小時制,格式為 hh:mm:ss [AP]M)
%s : 從 1970 年 1 月 1 日 00:00:00 UTC 到目前為止的秒數
%S : 秒(00..61)
%T : 直接顯示時間 (24 小時制)
%X : 相當於 %H:%M:%S
%Z : 顯示時區 %a : 星期幾 (Sun..Sat)
%A : 星期幾 (Sunday..Saturday)
%b : 月份 (Jan..Dec)
%B : 月份 (January..December)
%c : 直接顯示日期與時間
%d : 日 (01..31)
%D : 直接顯示日期 (mm/dd/yy)
%h : 同 %b
%j : 一年中的第幾天 (001..366)
%m : 月份 (01..12)
%U : 一年中的第幾周 (00..53) (以 Sunday 為一週的第一天的情形)
%w : 一週中的第幾天 (0..6)
%W : 一年中的第幾周 (00..53) (以 Monday 為一週的第一天的情形)
%x : 直接顯示日期 (mm/dd/yy)
%y : 年份的最後兩位數字 (00.99)
%Y : 完整年份 (0000..9999)

2.在設定時間方面:

date -s //設定當前時間,只有root許可權才能設定,其他只能檢視。
date -s 20080523 //設定成20080523,這樣會把具體時間設定成空00:00:00
date -s 01:01:01 //設定具體時間,不會對日期做更改
date -s “01:01:01 2008-05-23″ //這樣可以設定全部時間
date -s “01:01:01 20080523″ //這樣可以設定全部時間
date -s “2008-05-23 01:01:01″ //這樣可以設定全部時間
date -s “20080523 01:01:01″ //這樣可以設定全部時間

3.加減:

date +%Y%m%d         //顯示前天年月日
date +%Y%m%d --date="+1 day"  //顯示前一天的日期
date +%Y%m%d --date="-1 day"  //顯示後一天的日期
date +%Y%m%d --date="-1 month"  //顯示上一月的日期
date +%Y%m%d --date="+1 month"  //顯示下一月的日期
date +%Y%m%d --date="-1 year"  //顯示前一年的日期
date +%Y%m%d --date="+1 year"  //顯示下一年的日期

例子

顯示當前時間

[root@layzj022301 ~]# date
Mon Feb 27 23:54:13 CST 2017
[root@layzj022301 ~]# date '+%c'
Mon 27 Feb 2017 11:54:48 PM CST
[root@layzj022301 ~]# date '+%D'
02/27/17
[root@layzj022301 ~]# date '+%x'
02/27/2017
[root@layzj022301 ~]# date '+%T'
23:55:10
[root@layzj022301 ~]# date '+%X'
11:55:16 PM
[root@layzj022301 ~]#

格式化輸出

[root@layzj022301 ~]# date +"%Y-%m-%d"
2017-02-27
[root@layzj022301 ~]#

輸出昨天日期:

[root@layzj022301 ~]# date -d "1 day ago" +"%Y-%m-%d"
2017-02-26
[root@layzj022301 ~]#

設定時間:

date -s                        //設定當前時間,只有root許可權才能設定,其他只能檢視 
date -s 20170226               //設定成20120523,這樣會把具體時間設定成空00:00:00 
date -s 01:01:01               //設定具體時間,不會對日期做更改 
date -s "01:01:01 2017-02-26"  //這樣可以設定全部時間 
date -s "01:01:01 20170226"    //這樣可以設定全部時間 
date -s "2017-02-26 01:01:01"  //這樣可以設定全部時間 
date -s "20170226 01:01:01"    //這樣可以設定全部時間

日期的加減操作

date +%Y%m%d               //顯示前天年月日 
date -d "+1 day" +%Y%m%d   //顯示前一天的日期 
date -d "-1 day" +%Y%m%d   //顯示後一天的日期 
date -d "-1 month" +%Y%m%d //顯示上一月的日期 
date -d "+1 month" +%Y%m%d //顯示下一月的日期 
date -d "-1 year" +%Y%m%d  //顯示前一年的日期 
date -d "+1 year" +%Y%m%d  //顯示下一年的日期

date --help

[root@layzj022301 ~]# date --help
Usage: date [OPTION]... [+FORMAT]
  or:  date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
Display the current time in the given FORMAT, or set the system date.

  -d, --date=STRING         display time described by STRING, not `now'
  -f, --file=DATEFILE       like --date once for each line of DATEFILE
  -r, --reference=FILE      display the last modification time of FILE
  -R, --rfc-2822            output date and time in RFC 2822 format.
                            Example: Mon, 07 Aug 2006 12:34:56 -0600
      --rfc-3339=TIMESPEC   output date and time in RFC 3339 format.
                            TIMESPEC=`date', `seconds', or `ns' for
                            date and time to the indicated precision.
                            Date and time components are separated by
                            a single space: 2006-08-07 12:34:56-06:00
  -s, --set=STRING          set time described by STRING
  -u, --utc, --universal    print or set Coordinated Universal Time
      --help     display this help and exit
      --version  output version information and exit

FORMAT controls the output.  Interpreted sequences are:

  %%   a literal %
  %a   locale's abbreviated weekday name (e.g., Sun)
  %A   locale's full weekday name (e.g., Sunday)
  %b   locale's abbreviated month name (e.g., Jan)
  %B   locale's full month name (e.g., January)
  %c   locale's date and time (e.g., Thu Mar  3 23:05:25 2005)
  %C   century; like %Y, except omit last two digits (e.g., 20)
  %d   day of month (e.g, 01)
  %D   date; same as %m/%d/%y
  %e   day of month, space padded; same as %_d
  %F   full date; same as %Y-%m-%d
  %g   last two digits of year of ISO week number (see %G)
  %G   year of ISO week number (see %V); normally useful only with %V
  %h   same as %b
  %H   hour (00..23)
  %I   hour (01..12)
  %j   day of year (001..366)
  %k   hour ( 0..23)
  %l   hour ( 1..12)
  %m   month (01..12)
  %M   minute (00..59)
  %n   a newline
  %N   nanoseconds (000000000..999999999)
  %p   locale's equivalent of either AM or PM; blank if not known
  %P   like %p, but lower case
  %r   locale's 12-hour clock time (e.g., 11:11:04 PM)
  %R   24-hour hour and minute; same as %H:%M
  %s   seconds since 1970-01-01 00:00:00 UTC
  %S   second (00..60)
  %t   a tab
  %T   time; same as %H:%M:%S
  %u   day of week (1..7); 1 is Monday
  %U   week number of year, with Sunday as first day of week (00..53)
  %V   ISO week number, with Monday as first day of week (01..53)
  %w   day of week (0..6); 0 is Sunday
  %W   week number of year, with Monday as first day of week (00..53)
  %x   locale's date representation (e.g., 12/31/99)
  %X   locale's time representation (e.g., 23:13:48)
  %y   last two digits of year (00..99)
  %Y   year
  %z   +hhmm numeric timezone (e.g., -0400)
  %:z  +hh:mm numeric timezone (e.g., -04:00)
  %::z  +hh:mm:ss numeric time zone (e.g., -04:00:00)
  %:::z  numeric time zone with : to necessary precision (e.g., -04, +05:30)
  %Z   alphabetic time zone abbreviation (e.g., EDT)

By default, date pads numeric fields with zeroes.
The following optional flags may follow `%':

  -  (hyphen) do not pad the field
  _  (underscore) pad with spaces
  0  (zero) pad with zeros
  ^  use upper case if possible
  #  use opposite case if possible

After any flags comes an optional field width, as a decimal number;
then an optional modifier, which is either
E to use the locale's alternate representations if available, or
O to use the locale's alternate numeric symbols if available.

Report date bugs to bug-coreutils@gnu.org
GNU coreutils home page: <http://www.gnu.org/software/coreutils/>
General help using GNU software: <http://www.gnu.org/gethelp/>
For complete documentation, run: info coreutils 'date invocation'
[root@layzj022301 ~]#