命令概述
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 小时(..):24小时制,01,02,03
% I 小时(..):12小时制,01,02,03
% k 小时(..):24小时制,1,2,3
% l 小时(..):12小时制,1,2,3
% M 分(..)
% p 显示出AM或PM
% r 时间(hh:mm:ss AM或PM),12小时
% s 从1970年1月1日00::00到目前经历的秒数
% S 秒(..)
% 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 :: CST )
% d 一个月的第几天(..)
% D 日期(mm/dd/yy)
% h 和%b选项相同
% j 一年的第几天(..)
% m 月(..)
% w 一个星期的第几天(0代表星期天)
% W 一年的第几个星期(..,星期一为第一天)
% x 显示日期的格式(mm/dd/yy)
% y 年的最后两个数字( 1999则是99)
% Y 年(例如:,1996等)
%Y year
%z +hhmm numeric timezone (e.g., -)
%:z +hh:mm numeric timezone (e.g., -:)
%::z +hh:mm:ss numeric time zone (e.g., -::)
%:::z numeric time zone with : to necessary precision (e.g., -, +:)
%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 本站点所有随笔都是原创,欢迎大家转载;但转载时必须注明文章来源,且在文章开头明显处给明链接。 《欢迎交流讨论》 |