date :
用来打印或设置系统日期和时间。
它在linux shell编程中经常会用到。比如每天生成随日期变化的档案名,尤其在银行业务中每天都会生成流水文件。eg:datefile=$(date "+%Y%m%d")
对于日期的计算在编程中也是有很多的应用。
下面,让我们详细了解下这个命令。
date [选项]... [+格式]
date [选项] [MMDDhhmm[[CC]YY][.ss]]
date常用选项
-d --date=STRING | 显示STRING指定的时间 |
-f --file=DATEFILE | 显示DATEFILE中每一行指定的时间 |
-r --reference=FILE | 显示FILE的最后修改时间 |
-s --set=STRING | 根据STRING设置时间 |
-u, --utc | 显示或设置全球时间 |
--help | 显示帮助文件并退出 |
--version | 显示版本信息并退出 |
FORMAT(输出格式)
%% | 显示为% |
%a | 当前区域星期几(简称) |
%A | 当前区域星期几(全称) |
%b | 当前区域月份简称 |
%B | 当前区域月份全称 |
%c | 当前区域的日期和时间 |
%d | 月份中的几号(两位) |
%D | 日期(mm/dd/yy) |
%e | 月份中的几号(去0) |
%h | 同%b |
%H | 小时(24小时制两位) |
%I | 小时(12小时制两位) |
%j | 一年中的第几天(3位) |
%k | 小时(24小时制去零) |
%l | 小时(12小时制去零) |
%m | 月份(两位) |
%M | 分钟数(两位) |
%n | 换行 |
%p | 当先时间是上午AM还是下午PM |
%r | 时间,按12小时制显示 |
%s | 从1970/1/1/0/0/0到现在经历的秒数 |
%S | 秒数(两位) |
%t | 水平方向的tab制表符 |
%T | 时间,按24小时制显示(hh:mm:ss) |
%U | 一年中的第几个星期(00-53)周天为开始 |
%V | 一年中的第几个星期(01-54)周一为开始 |
%w | 用数字表示星期几(0-6) |
%W | 一年中的第几个星期(00-53)周一为开始 |
%x | 按照(mm/dd/yy)显示当前日期 |
%X | 按照(%H:%M:%S)格式显示当前时间 |
%y | 年(后两位) |
%Y | 年(4位) |
%z | 根据RFC-822中指定的数字时区显示 |
%Z | 时区 |
修改系统时间
[linux@linux ~]$ su – root //切换的root用户 密码: [root@linux ~]# date //显示当前系统时间 2015年 05月 09日 星期六 18:35:30 CST [root@linux ~]# date -s "2015-05-31 10:56:45" //设置系统时间 2015年 05月 31日 星期日 10:56:45 CST [root@linux ~]# hwclock //查看硬件时间 2015年05月10日 星期日 18时56分48秒 -0.832548 seconds [root@linux ~]# hwclock –w //硬件时间与系统时间同步 [root@linux ~]# hwclock 2015年05月31日 星期日 10时57分15秒 -0.719662 seconds |
简单练习下 -d 参数
[root@linux ~]# date -d "next day" //可以用""包括 2015年 06月 01日 星期一 11:09:23 CST [root@linux ~]# date -d next-day //可以用-连接 2015年 06月 01日 星期一 11:09:35 CST [root@linux ~]# date -d next_day //不能用_连接,会解析成空格 date: 无效的日期"next_day" [root@linux ~]# date -d "-10 days" +%Y-%m-%d //显示10天前的日期 2015-05-21 [linux@linux ~]$ date -d 20150922 2015年 09月 22日 星期二 00:00:00 CST |
date命令参数很多,不需要全部记忆,但是关于时间的计算显示一定要想到date然后利用man帮助来解决问题。
本文版权归作者所有,欢迎转载,且在文章页面明显位置给出原文链接