在 Linux 中 date 有很多用法,在这里我简单介绍一下 -d 这个参数的使用方法以及使用例子
date-d//显示字符串所指的日期与时间。字符串前后必须加上双引号
指定显示的日期格式
date<+时间日期格式>例如:date+"%Y-%m-%d"// 注意 :+ 和格式之间没有空格2016-11-30
有可能用到的格式
%H小时,24小时制(00~23)%I小时,12小时制(01~12)%k小时,24小时制(0~23)%l小时,12小时制(1~12)%M分钟(00~59)%p显示出AM或PM%r显示时间,12小时制(hh:mm:ss%p)%s从1970年1月1日00:00:00到目前经历的秒数%S显示秒(00~59)%T显示时间,24小时制(hh:mm:ss)%X显示时间的格式(%H:%M:%S)%Z显示时区,日期域(CST)%a星期的简称(Sun~Sat)%A星期的全称(Sunday~Saturday)%h,%b月的简称(Jan~Dec)%B月的全称(January~December)%c日期和时间(TueNov2014:12:582012)%d一个月的第几天(01~31)%x,%D日期(mm/dd/yy)%j一年的第几天(001~366)%m月份(01~12)%w一个星期的第几天(0代表星期天)%W一年的第几个星期(00~53,星期一为第一天)%y年的最后两个数字(1999则是99)
输出昨天日期
date-d"1 day ago"+"%Y-%m-%d"2016-11-29
2秒后输出
date-d"2 second"+"%Y-%m-%d %H:%M.%S"2016-11-3010:46.04
时间戳类型的 输出对应的1234567890秒
date-d"1970-01-01 1234567890 seconds"+"%Y-%m-%d %H:%m:%S"2009-02-1323:02:30
普通格式
date-d"2016-11-30"+"%Y/%m/%d %H:%M.%S"2016/11/3000:00.00
apache格式转换:
date-d"Nov 30, 2016 12:00:37"+"%Y-%m-%d %H:%M.%S"2016-11-3012:00.37
格式转换后时间游走:
date-d"Nov 30, 2016 12:00:37 AM 2 year ago"+"%Y-%m-%d %H:%M.%S"2014-11-3000:00.37
加减操作
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//显示下一年的日期
如果需要计算一组命令花费多少时间
start=$(date+"%d")//以时间戳类型保存当前时间// 执行需要计算的命令end=$(date+"%d")//以时间戳类型保存当前时间difference=$(( end-start )) // 相减的结果就是命令执行完需要的时间