date命令使用说明

1、命令概述

  date命令是显示或设定系统的日期与时间,在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记 。
  若是不以加号作为开头,则表示要设定时间,而时间格式MMDDhhmm[[CC]YY][.ss],其中 MM 为月份,DD 为日,hh 为小时,mm 为分钟,CC 为年份前两位数字,YY 为年份后两位数字,ss 为秒数。
  很多shell脚本里面需要打印不同格式的时间或日期,以及要根据时间和日期执行操作。延时通常用于脚本执行过程中提供一段等待的时间。日期可以以多种格式去打印,也可以使用命令设置固定的格式。

2、命令语法

date【选项】 【+输出格式】

3、命令选项

-d<字符串>:显示字符串所指的日期与时间。字符串前后必须加上双引号;
-s<字符串>:根据字符串来设置日期与时间。字符串前后必须加上双引号;

date +时间日期格式:指定显示时使用的日期时间格式:

%%:打印出%
%a:星期几的缩写(Sun..Sat)
%A:星期几的完整名称 (Sunday..Saturday)
%b:月份的缩写(Jan..Dec)
%B:月份的完整名称(January..December)
%c:日期时间(Sat Nov 04 12:02:33 EST 1989)
%C:世纪(年份除100后去整) [00-99]
%d:一个月的第几天(01..31)
%D:日期(mm/dd/yy)
%e:一个月的第几天 ( 1..31)
%F:日期,同%Y-%m-%d
%g:年份(yy)
%G:年份(yyyy)
%h:同%b,月份的缩写(Jan..Dec)
%H:24小时制(00..23)
%I:12小时制(01..12),#大写的i
%j:一年的第几天(001..366)
%k:24小时制( 0..23)
%l:12小时制( 1..12),#小写的L
%m:月份(01..12)
%M:分钟(00..59)
%n:换行
%N:纳秒(000000000..999999999)
%p:AM or PM
%P:am or pm
%r:12小时制时间(hh:mm:ss [AP]M)
%R:24小时制时间(hh:mm)
%s:从00:00:00 1970-01-01 UTC开始的秒数
%S:秒(00..60)
%t:制表符
%T:24小时制时间(hh:mm:ss)
%u:一周的第几天(1..7); 1 表示星期一
%U:一年的第几周,周日为每周的第一天(00..53)
%V:一年的第几周,周一为每周的第一天 (01..53)
%w:一周的第几天 (0..6); 0 代表周日
%W:一年的第几周,周一为每周的第一天(00..53)
%x:日期(mm/dd/yy)
%X:时间(%H:%M:%S AM)
%y:年份后两位(00..99)
%Y:年份 (1970…)
%z:RFC-2822 风格数字格式时区(-0500)
%Z:时区(e.g., EDT), 无法确定时区则为空

常用的:
%Y:年份 (1970…)
%m:月份(01..12)
%d:一个月的第几天(01..31)
%H:小时(00..23)
%M:分钟(00..59)
%S:秒(00..60)
%F:日期,同%Y-%m-%d
%T:24小时制时间(hh:mm:ss)

常用的组合:
date "+%Y-%m-%d %H:%H:%S"
date "+%F %T"

4、命令示例

4.1 -d 选项的使用:

1)输出明天日期:

1 [root@lzg ~]# date
2 Tue Nov  5 10:37:37 CST 2019
3 [root@lzg ~]# date -d "1 day"
4 Wed Nov  6 10:37:44 CST 2019
5 [root@lzg ~]# date -d "1 day" "+%Y-%m-%d %H:%M:%S"
6 2019-11-06 10:37:55

2)输出5天后日期:

1 [root@lzg ~]# date -d "5 day"
2 Sun Nov 10 10:38:34 CST 2019
3 [root@lzg ~]# date -d "5 day" "+%Y-%m-%d %H:%M:%S"
4 2019-11-10 10:38:38

3)输出1000秒后的时间:

1 [root@lzg ~]# date
2 Tue Nov  5 10:39:04 CST 2019
3 [root@lzg ~]# date -d "1000 second"
4 Tue Nov  5 10:55:54 CST 2019
5 [root@lzg ~]# date -d "1000 second" "+%Y-%m-%d %H:%M:%S"
6 2019-11-05 10:56:02

4)输出2年后的日期:

1 [root@lzg ~]# date
2 Tue Nov  5 10:40:49 CST 2019
3 [root@lzg ~]# date -d "2 year"
4 Fri Nov  5 10:40:51 CST 2021
5 [root@lzg ~]# date -d "2 year" "+%Y-%m-%d %H:%M:%S"
6 2021-11-05 10:41:00

5)输出1天前的时间、5天前的时间、1000秒前的时间、2年前的时间:

1 [root@lzg ~]# date -d "1 day ago" "+%Y-%m-%d %H:%M:%S"
2 2019-11-04 10:42:25
3 [root@lzg ~]# date -d "5 day ago" "+%Y-%m-%d %H:%M:%S"
4 2019-10-31 10:42:29
5 [root@lzg ~]# date -d "1000 second ago" "+%Y-%m-%d %H:%M:%S"
6 2019-11-05 10:26:02
7 [root@lzg ~]# date -d "2 year ago" "+%Y-%m-%d %H:%M:%S"
8 2017-11-05 10:42:57

6)加减操作(sec、min、hour、day、weeks、month、year):

1 date +%Y%m%d               #显示当前年月日 
2 date -d "+1 day" +%Y%m%d   #显示前一天的日期 
3 date -d "-1 day" +%Y%m%d   #显示后一天的日期 
4 date -d "-1 month" +%Y%m%d #显示上一月的日期 
5 date -d "+1 month" +%Y%m%d #显示下一月的日期 
6 date -d "-1 year" +%Y%m%d  #显示前一年的日期 
7 date -d "+1 year" +%Y%m%d  #显示下一年的日期
8 date -d "+5 hour" +%Y%m%d %H:%M:%S  #显示5小时后时间

[root@lzg ~]# date -d "+5day +5hour +10min" "+%Y-%m-%d %H:%M:%S"      #5天5小时10分钟后的时间
2019-11-10 16:49:34

[root@lzg ~]# date -d "-5day -5hour -10min" "+%Y-%m-%d %H:%M:%S"      #5天5小时10分钟前的时间
2019-10-31 06:35:28

7)普通格式转换:

1 [root@lzg ~]# date -d "20090225" "+%Y-%m-%d"
2 2009-02-25
3 [root@lzg ~]# date -d "20090225" "+%Y-%m-%d %H:%M:%S"
4 2009-02-25 00:00:00

8)apache格式转换:

1 [root@lzg ~]# date -d "Dec 9, 2010 10:00:37 AM" "+%Y-%m-%d %H:%M:%S"
2 2010-12-09 10:00:37

9)格式转换加时间:

1 [root@lzg ~]# date -d "Dec 9, 2010 10:00:37 AM 2 year" "+%Y-%m-%d %H:%M:%S"
2 2012-12-09 10:00:37

4.2 -s 选项的使用(设置日期和时间):

1 [root@lzg ~]# date
2 Tue Nov  5 10:44:29 CST 2019
3 [root@lzg ~]# date -s "2011-01-10 12:22:22"      #修改时间
4 Mon Jan 10 12:22:22 CST 2011
5 [root@lzg ~]# date
6 Mon Jan 10 12:22:26 CST 2011
1 date -s          #设置时间,只有root权限才能设置,其他只能查看 
2 date -s 20120523 #设置成20120523,这样会把具体时间设置成空00:00:00 
3 date -s 01:01:01 #设置具体时间,不会对日期做更改 
4 date -s "01:01:01 2012-05-23" #这样可以设置全部时间 
5 date -s "01:01:01 20120523"   #这样可以设置全部时间 
6 date -s "2012-05-23 01:01:01" #这样可以设置全部时间 
7 date -s "20120523 01:01:01"   #这样可以设置全部时间

4.3 日期加描述:

1 [root@lzg ~]# date "+Today is %Y-%m-%d %H:%M:%S"
2 Today is 2019-11-05 11:13:05

猜你喜欢

转载自www.cnblogs.com/liuzgg/p/11797521.html