Linux中date命令的各种实用方法

1、以下是服务器现在的时间,当前时间的各种表示方法,表示成自己想要的时间格式,后面的范例将会在这个时间基础之上进行演示,同时这也是熟练掌握后面各种date命令的前提,请读者注意

[root@RHEL601tmp]#date

2012年 07月 19日 星期四 20:11:16 CST

读者可以设定特定的格式,格式设定规则:一个加号后接数个标记,每个标记中都有%,其中可用的标记列表和说明如下: 

%n:下一行

%t:跳格

%H:小时(00..23)

%I:小时(01..12)

%k:小时(0..23)

%l:小时(1..12)

%M:分钟(00..59)

%p:显示本地AM或PM

%r:直接显示时间(12小时制,格式为hh:mm:ss[AP]M)

%s:从1970年1月1日00:00:00UTC到目前为止的秒数

%S:秒(00..59)

%T:直接显示时间(24小时制)

%X:相当于%H:%M:%S

%Z:显示时区%a:星期几(Sun..Sat)

%A:星期几(Sunday..Saturday)

%b:月份(Jan..Dec)

%B:月份(January..December)

%c:直接显示日期与时间

%d:日(01..31)

%D:直接显示日期(mm/dd/yy)

%h:同%b

%j:一年中的第几天(001..366)

%m:月份(01..12)

%U:一年中的第几周(00..53)(以Sunday为一周的第一天的情形)

%w:一周中的第几天(0..6)

%W:一年中的第几周(00..53)(以Monday为一周的第一天的情形)

%x:直接显示日期(mm/dd/yy)

%y:年份的最后两位数字(00.99)

%Y : 完整年份 (0000..9999)

按照特定的格式输出时间:短接符"-"、空格""和冒号":"为分隔符,其中空格前面加了转义符号"\"

[root@RHEL601tmp]#date+%Y-%m-%d\%H:%M:%S

2012-07-19 21:10:28

在当前时间的基础上往前推或者往后推三天

[root@RHEL601tmp]#date-d"+3day"

2012年07月22日星期日20:12:08CST

[root@RHEL601tmp]#date-d"-3day"

2012年 07月 16日 星期一 20:12:12 CST

在当前时间的基础上往前推或者往后推三个月

[root@RHEL601tmp]#date-d"-3month"

2012年04月19日星期四20:12:39CST

[root@RHEL601tmp]#date-d"+3month"

2012年 10月 19日 星期五 20:12:48 CST

在当前时间的基础上往前推或者往后推三年

[root@RHEL601tmp]#date-d"+3year"

2015年07月19日星期日20:13:06CST

[root@RHEL601tmp]#date-d"-3year"

2009年 07月 19日 星期日 20:13:11 CST

在当前时间的基础上往前推或者往后推三小时

[root@RHEL601tmp]#date-d"-3hour"

2012年07月19日星期四17:13:20CST

[root@RHEL601tmp]#date-d"+3hour"

2012年 07月 19日 星期四 23:13:24 CST

在当前时间的基础上往前推或者往后推三分钟

[root@RHEL601tmp]#date-d"+3minute"

2012年07月19日星期四20:16:56CST

[root@RHEL601tmp]#date-d"-3minute"

2012年 07月 19日 星期四 20:10:59 CST

在当前时间的基础上往前推或者往后推三十秒

[root@RHEL601tmp]#date&&date-d"-30second"

2012年07月19日星期四20:14:24CST

2012年07月19日星期四20:13:54CST

[root@RHEL601tmp]#date&&date-d"+30second"

2012年07月19日星期四20:14:29CST

2012年 07月 19日 星期四 20:14:59 CST

2、接下来的范例说明如何用date来表示各种各样的时间,表示的都是某一天的零点时间,也可以在当前的时分秒的基础上表示时间,(特别注意中间用到了反单引号`)参见范例

date-d`date+%y%m01`#本月第一天

[root@RHEL601tmp]#date-d`date+%y%m01`

2012年 07月 01日 星期日 00:00:00 CST

date -d `date +%y%m01`"-1 day"  #上个月最后一天

[root@RHEL601tmp]#date-d`date+%y%m01`"-1day"

2012年 06月 30日 星期六 00:00:00 CST

date -d `date -d "-3 month" +%y%m01`"-1 day" #4个月前的第一天

[root@RHEL601tmp]#date-d`date-d"-3month"+%y%m01`"-1day"

2012年 03月 31日 星期六 00:00:00 CST

date -d `date -d "+12 month" +%y%m01`"-1 day" #第11个月后的第一天

[root@RHEL601tmp]#date-d`date-d"+12month"+%y%m01`"-1day"

2013年 06月 30日 星期日 00:00:00 CST

date -d `date -d "-1 month" +%y%m01` #上个月第一天

[root@RHEL601tmp]#date-d`date-d"-1month"+%y%m01`

2012年 06月 01日 星期五 00:00:00 CST

date-d`date-d"+12month"+%y%m01`#第12个月后的第一天

[root@RHEL601tmp]#date-d`date-d"+12month"+%y%m01`

2013年 07月 01日 星期一 00:00:00 CST

date -d `date -d "-1 day" +%Y%m%d` #前一天零点时间

[root@RHEL601tmp]#date-d`date-d"-1day"+%Y%m%d`

2012年 07月 18日 星期三 00:00:00 CST

date -d `date -d "-3 day" +%Y%m%d` #前三天零点时间

[root@RHEL601tmp]#date-d`date-d"-3day"+%Y%m%d`

2012年 07月 16日 星期一 00:00:00 CST

date -d `date -d "+1 day" +%Y%m%d` #明天零点时间

[root@RHEL601tmp]#date-d`date-d"+1day"+%Y%m%d`

2012年 07月 20日 星期五 00:00:00 CST

date -d `date -d "+3 day" +%Y%m%d` #往后推三天零点时间

[root@RHEL601tmp]#date-d`date-d"+3day"+%Y%m%d`

2012年 07月 22日 星期日 00:00:00 CST

3、以下简单示范了字母大小写在date命令中的区别

Y#代表完整的年份,例如:2012年将显示2012

y #代表缩写年份,例如:2012年 缩写为 12

[root@RHEL601 tmp]# date +"%y%m01%H%M%S"

121201121556

[root@RHEL601tmp]#date+"%Y%m01%H%M%S"

20121201121610

4、以下范例说明如何调整服务器的时间

ntpdate210.72.145.44#将服务器时间调整为正常时间,210.72.145.44是国家授时中心服务器IP地址

[root@RHEL601tmp]#ntpdate210.72.145.44

19 Jul 13:07:07 ntpdate[15150]: adjust time server 210.72.145.44 offset -0.020920 sec

date 121212122012 #将时间设置为2012年 12月 12日 星期三 12:12:00,date后面的数字代表月日时分年,还可以加秒,需要后面跟英文状态下的句号字符".",例如:121212122012.12

[root@RHEL601tmp]#date121212122012

2012年12月12日星期三12:12:00CST

[root@RHEL601tmp]#date121212122012.12

2012年 12月 12日 星期三 12:12:12 CST

[root@RHEL601 tmp]# date `date -d "1 day ago" +%m%d%H%M%Y.%S`

2012年07月18日星期三20:13:04CST

[root@RHEL601tmp]#date

2012年07月18日星期三20:13:10CST

[root@RHEL601tmp]#date`date-d"3daysago"+%m%d%H%M%Y.%S`

2012年07月15日星期日20:13:18CST

[root@RHEL601tmp]#date`date-d"5daysago"+%m%d%H%M%Y.%S`

2012年07月10日星期二20:13:28CST

[root@RHEL601tmp]#date`date-d"$((3600*24))secondsago"+%m%d%H%M%Y.%S`

2012年07月09日星期一20:13:39CST

[root@RHEL601tmp]#date`date-d"$((3600*24))secondsago"+%m%d%H%M%Y.%S`

2012年07月08日星期日20:14:01CST

[root@RHEL601tmp]#ntpdate210.72.145.44

19 Jul 20:14:15 ntpdate[26846]: step time server 210.72.145.44 offset 950404.037565 sec

原文连接:http://521cto.blog.51cto.com/950229/935642

相关推荐