在linux中man手册页,对date -d 参数的的说明比较模糊,一下的举例,进一步说明:
#-d --date=STRING display time described by STRING not ‘now‘
命令:
date -d nex-day +%Y%m%d //明天日期
date -d tommorw +%Y%m%d //明天日期
date -d last-day +%Y%m%d //昨天日期
date -d yesterday +Y%m%d //昨天日期
date -d last-month +%Y%m //上个月日期
date -d next-month +%Y%m //下个月的日期
date -d next-year +%Y //明年日期
DATE=$(date +%Y%m%d --date ‘2 days ago‘) //获取昨天或多天前的日期
date 使用的权限:所有使用者。
使用方式:
date [-u][-d datestr] [-s datestr] [--utc]
[--universal][--date=datestr] [--set=datestr]
[--help][--version][+FORMAT][MMDDhhmm][[CC]YY][.ss]]
说明:
date 能用未显示或设定的日期和时间,在显示方面使用者能设定预显示的格式,格式设定为一个加号后接数个标记,其中可用的标记数为如下:
格式:+(一个)后跟多个标记
时间方面:
% //印出
%n //下一行
%t //跳出
%H //小时(00,01,......23)是双数显示24小时制
[root@localhost ~]# date +%H
19
[root@localhost ~]#
%k //小时(0,1,2,......23)是单数显示24小时制
[root@localhost ~]# date +%k
19
[root@localhost ~]#
%I //小时(01,02,03......12)是双数显示12小时制
[root@localhost ~]# date +%I
07
[root@localhost ~]#
%l //小时(1,2,3.........12)是单数显示12小时制
[root@localhost ~]# date +%l
7
[root@localhost ~]#
%M //分钟(00,01,........59)
[root@localhost ~]# date +%M
39
[root@localhost ~]#
%p //显示本地AM,PM
[root@localhost ~]# date +%P
pm
[root@localhost ~]# date +%p
PM
[root@localhost ~]#
%r //直接显示时间(12小时制,格式为hh:mm:ss[AP]M)
[root@localhost ~]# date +%r
07:40:43 PM
[root@localhost ~]#
[root@localhost ~]# date +%R
19:41
%s //从1970年一月一日00:00:00 UTC到目前为止的秒数
[root@localhost ~]# date +%s
1470138130
[root@localhost ~]#
%T //直接显示时间(24小时制)
[root@localhost ~]# date +%T
19:42:57
[root@localhost ~]#
%x //相当于%H:%M:%s
[root@localhost ~]# date +%X //大写的X显示时间
07:43:17 PM
[root@localhost ~]# date +%x
08/02/2016
[root@localhost ~]#
%Z //显示时区
[root@localhost ~]# date +%z
+0800
[root@localhost ~]#
[root@localhost ~]# date +%Z
CST
[root@localhost ~]#
日期方面:
%a //简写星期几(sun,.....sat)
[root@localhost ~]# date +%a
Tue
[root@localhost ~]#
%A //完整星期几(sunday,...saturday)
[root@localhost ~]# date +%A
Tuesday
[root@localhost ~]#
%b //简写月份(jun,.......Dec)
[root@localhost ~]# date +%b
Aug
[root@localhost ~]#
%B //完整的月份(january,.....december)
[root@localhost ~]# date +%B
August
[root@localhost ~]#
%C //直接显示日期和时间
[root@localhost ~]# date +%C
20
[root@localhost ~]#
%d //日(01,02,......31)
[root@localhost ~]# date +%d
02
[root@localhost ~]#
%D //直接显示日期(mm/dd/yy)
[root@localhost ~]# date +%D
08/02/16
[root@localhost ~]#
%h //同%b
[root@localhost ~]# date +%h
Aug
[root@localhost ~]#
%j //一年中第几天(001,002,.....366)
[root@localhost ~]# date +%j
215
[root@localhost ~]#
%m //月份(01,02,......12)
[root@localhost ~]# date +%m
08
[root@localhost ~]#
%U //一年中第几周(00,01.....53)(以Sunday为一周的第一天)
[root@localhost ~]# date +%U
31
[root@localhost ~]#
%w //一周中的第几天
[root@localhost ~]# date +%w
2
[root@localhost ~]#
%W //一年中的第几周(00,01....53)(以monday为一周的第一天)
[root@localhost ~]# date +%W
31
[root@localhost ~]#
%x //直接显示日期(mm/dd/yy)
[root@localhost ~]# date +%x
08/02/2016
[root@localhost ~]#
%y //只显示年份的后两位数(00,01,...99)
[root@localhost ~]# date +%y
16
[root@localhost ~]#
%Y //完整的年份(0000,.......2016)
[root@localhost ~]# date +%Y
2016
[root@localhost ~]#
如不以加号开头“+”则表示要设置时间,而时间格式为 MMDDhhmm[[CC]YY][.ss]
其中MM为月份。 DD为日 hh为小时 mm为分钟 CC为年份前两位数字 YY为年份的后两位数字
ss为秒数。
-d datestr //显示datestr中所设置的时间(非系统时间)
--help //显示辅助信息
-s datestr //将系统时间设为datestr中说设定的时间
-u //显示目前的格林尼治时间
--version //显示版本号
举例:
显示时间后,跳行然后再显示日期:
[root@localhost ~]# date +%T%n%x
19:52:31
08/02/2016
[root@localhost ~]#
2. 显示月份日数
[root@localhost ~]# date +%B%d
August02
[root@localhost ~]#
3.显示日期和设定时间(12:34:56)
[root@localhost ~]# date
Tue Aug 2 20:08:17 CST 2016
[root@localhost ~]# clock
Tue 02 Aug 2016 08:08:23 PM CST -0.923671 seconds
[root@localhost ~]# date;date -s 12:34:56
Tue Aug 2 20:08:37 CST 2016
Tue Aug 2 12:34:56 CST 2016
[root@localhost ~]#
当我们不希望出现无意的0时,比如(1999/03/07)则能在标记中插入 “-”符号,比如说:date +%-H:%-M:%-S
举例:原本显示的是08:09:04 而变为 8:9:4
只有取得权限者(比如root)才能设定系统时间,我们应该注意,clock -w 来将系统时间写入CMOS,这样下次重新启动开机时。系统时间才会持续保持最新的正确值。
ntp: 时间同步:
linux系统下默认安装了ntp服务,手动进行ntp同步,如下:
ntpdate ntp 1.n1.net
date命令还可以获得给定日期是星期几?
举例:
[root@localhost ~]# date -d "nov 22"
Tue Nov 22 00:00:00 CST 2016
[root@localhost ~]#
练习:
相对于今天,两个星期之后的日期
[root@localhost ~]# date -d ‘2 weeks‘
Tue Aug 16 20:21:34 CST 2016
[root@localhost ~]#
下周一的日期
[root@localhost ~]# date -d ‘next monday‘
Mon Aug 8 00:00:00 CST 2016
[root@localhost ~]#
明天的日期
[root@localhost ~]# date -d ‘last-day‘
Mon Aug 1 20:22:48 CST 2016
[root@localhost ~]#
或
[root@localhost ~]# date -d tomorrow
Wed Aug 3 20:25:11 CST 2016
[root@localhost ~]#
上月是几月
[root@localhost ~]# date -d last-month +%Y%m%d
20160702
[root@localhost ~]#
下月是几月
[root@localhost ~]# date -d next-month +%Y%m%d
20160902
[root@localhost ~]#
昨天的日期
[root@localhost ~]# date -d last-day +%Y%m%d
20160801
[root@localhost ~]#
30天前的日期 //使用ago可以看到过去的日期
[root@localhost ~]# date -d ‘30 days ago‘
Sun Jul 3 20:28:05 CST 2016
[root@localhost ~]#
还可以使用负数,以得到相反的日期
举例:
相对于12月,14这个月前两周的日期:
[root@localhost ~]# date -d ‘dec 14 -2 weeks‘
Wed Nov 30 00:00:00 CST 2016
[root@localhost ~]#
原文地址:http://11857750.blog.51cto.com/11847750/1833691