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 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@jb51.net ~ ]# date -d next-day +%Y%m%d 20060328 [root@jb51.net ~ ]# date -d last-day +%Y%m%d 20060326 [root@jb51.net ~ ]# date -d yesterday +%Y%m%d 20060326 [root@jb51.net ~ ]# date -d tomorrow +%Y%m%d 20060328 [root@jb51.net ~ ]# date -d last-month +%Y%m 200602 [root@jb51.net ~ ]# date -d next-month +%Y%m 200604 [root@jb51.net ~ ]# date -d next-year +%Y 2007 ------------------------------------------ 而FreeBSD则不同;举例如下: For FreeBSD [root@jb51.net ~]# date -v -1d +%Y%m%d 20060326 [root@jb51.net ~]# date -v -1m +%Y%m%d 20060227 [root@jb51.net ~]# 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@jb51.net ~]# date +%Y%m%d 20100107 上面是今天的日期20100107 [root@jb51.net ~]# date -d "2 days ago" +%Y%m%d 20100105 上面是两天前的日期 [root@jb51.net ~]# date -d "4 days ago" +%Y%m%d 20100103 上面是四天前的日期 [root@jb51.net ~]# date -d "-1 days ago" +%Y%m%d 20100108 上面是一天后的日期 [root@jb51.net ~]# date -d "-2 days ago" +%Y%m%d 20100109 上面是两天后的日期 [root@jb51.net ~]# date -d "1 week ago" +%Y%m%d 20091231 上面是一周前的日期 [root@jb51.net ~]# date -d "1 year ago" +%Y%m%d 20090107 上面是一年前的日期