Linux date命令
命令概述
date命令可以用来设置和显示系统当前时间,特别是在有一些Shell命令里面用到date命令来做日期的不同的显示,所以该命令也是非常需要掌握的一个命令。
语法
date [OPTION]... [+FORMAT]
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
1.命令参数:
-d, --date:显示由字符串描述的日期
-f, --file:显示DATEFILE文件中的每行时间
-r, --reference:显示文件的最后修改时间
-R, --rfc-2822: 以RFC2822格式输出日期和时间
-s, --set:设置时间
-u, --utc:输出或者设置协调的通用时间
--help:帮助信息
--version版本信息
2.FORMAT
用于不同的时间格式显示方式
% H 小时(00..23):24小时制,01,02,03
% I 小时(01..12):12小时制,01,02,03
% k 小时(0..23):24小时制,1,2,3
% l 小时(1..12):12小时制,1,2,3
% 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等)
%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)
3.示例
当前时间
#显示当前日期时间 date
显示两天前的时间
#显示两天前的时间 date -d "+2 days ago"
以%Y-%m-%d %H:%M:%S格式显示当前时间
#以%Y-%m-%d %H:%M:%S格式显示当前时间 date "+%Y-%m-%d %H:%M:%S"
以%Y-%m-%d %H:%M:%S格式显示两天前时间
#显示两天前的时间,并以%Y-%m-%d %H:%M:%S格式输出
date -d "+2 days ago" "+%Y-%m-%d %H:%M:%S"
在date命令中如果要指定其他的时间是变量,那么时间必须要用双引号否则会报错,如果直接是时间值那么可以单引号,但是建议shell里面都使用双引号
#!/bin/bash adate=`date` var=`date --date="$adate" +'%H:%M'` echo $var
其它方式
#两天后 date -d "-2 days ago" +%Y%m%d #一星期前 date -d "1 week ago" +%Y%m%d #一星期后 date -d "-1 week ago" +%Y%m%d #一个月前 date -d "1 month ago" +%Y%m%d
#一个月后 date -d "-1 month ago" +%Y%m%d
#一年前 date -d "1 year ago" +%Y%m%d #下一天 date -d next-day +%Y%m%d #前一天 date -d last-day +%Y%m%d #前天 date -d yesterday +%Y%m%d #明天 date -d tomorrow +%Y%m%d #上个月 date -d last-month +%Y%m%d #下个月 date -d next-month +%Y%m%d #去年 date -d last-year +%Y%m%d #明年 date -d next-year +%Y%m%d
小时(hour),分钟(minute),秒(second)的实现方法同上
4.修改系统日期和时间
只修改日期,输入:date -s 2016-03-30
只修改时间,输入:date -s 21:00:00
同时修改日期时间,注意要加双引号,日期与时间之间有一空格,输入:
date -s "2016-03-30 21:00:00"
修改完后,把系统时间写入CMOS,硬件时钟,以免重启后失效,输入:
clock -w
date命令的使用技巧
--如果指定的时间是变量得必须使用双引号 var=`date --date="$2" +"%H:%M"` --如果同时指定变量和时间增量值那么两个应该放在一个双引号里面 cdate=`date -d "+10 minute $2" +%H:%M`
总结
date命令的使用技巧还有很多,这里也没有全部罗列,在shell命令里面比如做日期文件的时候经常会用到该命令,所以还需要熟练掌握。
备注: 作者:pursuer.chen 博客:http://www.cnblogs.com/chenmh 本站点所有随笔都是原创,欢迎大家转载;但转载时必须注明文章来源,且在文章开头明显处给明链接。 《欢迎交流讨论》 |