1、date --help
%% 輸出%符號 a literal %
%a 當前域的星期縮寫 locale’s abbreviated weekday name (Sun..Sat)
%A 當前域的星期全寫 locale’s full weekday name, variable length (Sunday..Saturday)
%b 當前域的月份縮寫 locale’s abbreviated month name (Jan..Dec)
%B 當前域的月份全稱 locale’s full month name, variable length (January..December)
%c 當前域的默認時間格式 locale’s date and time (Sat Nov 04 12:02:33 EST 1989)
%C n百年 century (year divided by 100 and truncated to an integer) [00-99]
%d 兩位的天 day of month (01..31)
%D 短時間格式 date (mm/dd/yy)
%e 短格式天 day of month, blank padded ( 1..31)
%F 文件時間格式 same as %Y-%m-%d
%g the 2-digit year corresponding to the %V week number
%G the 4-digit year corresponding to the %V week number
%h same as %b
%H 24小時制的小時 hour (00..23)
%I 12小時制的小時 hour (01..12)
%j 一年中的第幾天 day of year (001..366)
%k 短格式24小時制的小時 hour ( 0..23)
%l 短格式12小時制的小時 hour ( 1..12)
%m 雙位月份 month (01..12)
%M 雙位分鐘 minute (00..59)
%n 換行 a newline
%N 十億分之一秒 nanoseconds (000000000..999999999)
%p 大寫的當前域的上下午指示 locale’s upper case AM or PM indicator (blank in many locales)
%P 小寫的當前域的上下午指示 locale’s lower case am or pm indicator (blank in many locales)
%r 12小時制的時間表示(時:分:秒,雙位) time, 12-hour (hh:mm:ss [AP]M)
%R 24小時制的時間表示 (時:分,雙位)time, 24-hour (hh:mm)
%s 自基礎時間 1970-01-01 00:00:00 到當前時刻的秒數 seconds since `00:00:00 1970-01-01 UTC’ (a GNU extension)
%S 雙位秒 second (00..60); the 60 is necessary to accommodate a leap second
%t 橫向制表位(tab) a horizontal tab
%T 24小時制時間表示 time, 24-hour (hh:mm:ss)
%u 數字表示的星期(從星期一開始 1-7)day of week (1..7); 1 represents Monday
%U 一年中的第幾周星期天為開始 week number of year with Sunday as first day of week (00..53)
%V 一年中的第幾周星期一為開始 week number of year with Monday as first day of week (01..53)
%w 一周中的第幾天 星期天為開始 0-6 day of week (0..6); 0 represents Sunday
%W 一年中的第幾周星期一為開始 week number of year with Monday as first day of week (00..53)
%x 本地日期格式 locale’s date representation (mm/dd/yy)
%X 本地時間格式 locale’s time representation (%H:%M:%S)
%y 兩位的年 last two digits of year (00..99)
%Y 年 year (1970…)
%z RFC-2822 標準時間格式表示的域 RFC-2822 style numeric timezone (-0500) (a nonstandard extension)
%Z 時間域 time zone (e.g., EDT), or nothing if no time zone is determinable
By default, date pads numeric fields with zeroes. GNU date recognizes
the following modifiers between `%’ and a numeric directive.
`-’ (hyphen) do not pad the field
`_’ (underscore) pad the field with spaces
--------------------------------------------------------------------------------
2、一些用法
1)#以yymmdd的格式輸出43天前的當前時刻
date +%Y%m%d --date='43 days ago'
2)# 測試十億分之一秒
date +’%Y%m%d %H:%M:%S.%N’;date +’%Y%m%d %H:%M:%S.%N’;date +’%Y%m%d %H:%M:%S.%N’;date +’%Y%m%d %H:%M:%S.%N’
3)#創建以當前時間為文件名的目錄
mkdir `date +%Y%m%d`
4)#備份以時間做為文件名的
tar -cvf ./htdocs`date +%Y%m%d`.tar ./*
5)#顯示時間后跳行,再顯示目前日期
date +%T%n%Y%m%d
6)#只顯示月份與日數
date +%B%d
7)#獲取上周日期(day,month,year,hour)
date -d "-1 week" +%Y%m%d
8)#獲取24小時前日期
date --date="-24 hour" +%Y%m%d
9)#shell腳本里面賦給變量值
date_now=`date +%s`
10)#計算執行一段sql腳本的運行時間
TIME_BEGIN=$(date '+%s.%N')
$sqlcli < queries/q1.3.sql 1>> $FILE_RESULT
TIME_END=$(date '+%s.%N')
TIME_RUN=$(awk 'BEGIN{print '$TIME_END' - '$TIME_BEGIN'}')
11)#編寫shell腳本計算離自己生日還有多少天?
m=`date --date="$date1" +%m`
d=`date --date="$date1" +%d`
date_now=`date +%s`
y=`date +%Y`
birth=`date --date="$y$m$d" +%s`
internal=$(($birth-$date_now))
if [ "$internal" -lt "0" ]; then
birth=`date --date="$(($y+1))$m$d" +%s`
internal=$(($birth-$date_now))
fi
echo "There is :$((einternal/60/60/24)) days."
12)#若是不以加號作為開頭,則表示要設定時間,而時間格式為 MMDDhhmm[[CC]YY][.ss],
其中 MM 為月份,
DD 為日,
hh 為小時,
mm 為分鐘,
CC 為年份前兩位數字,
YY 為年份后兩位數字,
ss 為秒數
13)
#顯示目前的格林威治時間,也叫“世界時”。是英國的標準時間,也是世界各地時間的參考標準。中英兩國的標準時差為8個小時,即英國的當地時間比中國的北京時間晚8小時。
date -u
Thu Sep 28 09:32:04 UTC 2006
14)#修改時間
date -s
按字符串方式修改時間
可以只修改日期,不修改時間,輸入: date -s 2007-08-03
只修改時間,輸入:date -s 14:15:00
同時修改日期時間,注意要加雙引號,日期與時間之間有一空格,輸入:date -s "2007-08-03 14:15:00"
修改完后,記得輸入:clock -w
把系統時間寫入CMOS