[Linux] date命令

Linux date命令

可用标记如下
时间
%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:00 UTC 到目前为止的秒数
%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/yyyy)
%y : 年份的最后两位数字 (00.99)
%Y : 完整年份 (0000..9999)

[例] 将以上查询结果打印出来,datetest.sh内容如下

#!/bin/bash
para=`cat para.txt`
current_time=`date`
echo 'Current time is' `date "+%c"`
for i in $para
  do
    echo $i `date "+$i"`
  done

para.txt内容为 

%H
%I
%k
%l
...

[root@xxx ~]# date -s "2019-11-26 14:09:18"
Tue Nov 26 14:09:18 CST 2019
[root@xxx ~]# ./datetest.sh
Current time is Tue 26 Nov 2019 02:09:22 PM CST
%H 14
%I 02
%k 14
%l 2
%M 09
%p PM
%r 02:09:22 PM
%s 1574748562
%S 22
%T 14:09:22
%X 02:09:22 PM
%Z CST
%a Tue
%A Tuesday
%b Nov
%B November
%c Tue 26 Nov 2019 02:09:22 PM CST
%d 26
%D 11/26/19
%h Nov
%j 330
%m 11
%U 47
%w 2
%W 47
%x 11/26/2019
%y 19
%Y 2019
[root@xxx ~]# date -s "2019-11-26 06:27:05"
Tue Nov 26 06:27:05 CST 2019
[root@xxx ~]# ./datetest.sh
Current time is Tue 26 Nov 2019 06:27:08 AM CST
%H 06
%I 06
%k 6
%l 6
%M 27
%p AM
%r 06:27:08 AM
%s 1574720828
%S 08
%T 06:27:08
%X 06:27:08 AM
%Z CST
%a Tue
%A Tuesday
%b Nov
%B November
%c Tue 26 Nov 2019 06:27:08 AM CST
%d 26
%D 11/26/19
%h Nov
%j 330
%m 11
%U 47
%w 2
%W 47
%x 11/26/2019
%y 19
%Y 2019
[root@xxx ~]#
[root@xxx ~]# date -s "2019-11-26 12:17:05"
Tue Nov 26 12:17:05 CST 2019
[root@xxx ~]#
[root@xxx ~]# date -s "2019-11-26 00:17:05"
Tue Nov 26 00:17:05 CST 2019
[root@xxx ~]# ./datetest.sh
Current time is Tue 26 Nov 2019 12:17:07 AM CST
%H 00
%I 12
%k 0
%l 12
(...省略...)
[root@xxx ~]# date -s "2019-11-26 12:17:05"
Tue Nov 26 12:17:05 CST 2019
[root@xxx ~]# ./datetest.sh
Current time is Tue 26 Nov 2019 12:17:06 PM CST
%H 12
%I 12
%k 12
%l 12
(...省略...)
[root@xxx ~]#

简单计算

显示昨天
date -d 'yesterday' '+%Y-%m-%d %H:%M:%S'
date -d '-1 days' '+%Y-%m-%d %H:%M:%S'

显示明天
date -d 'tomorrow' '+%Y-%m-%d %H:%M:%S'
date -d '+1 days' '+%Y-%m-%d %H:%M:%S'
date -d '1 days' '+%Y-%m-%d %H:%M:%S'

显示两小时之前(-)的两分钟之后(+或省略符号)
date -d '-2 hours 2 minutes' '+%Y-%m-%d %H:%M:%S'

[例] 打印前一天后一天、两分钟之后等(里面的量词加不加s都可以)

[root@xxx ~]# date '+%Y-%m-%d %H:%M:%S';date -d '-2 hour 2 minute' '+%Y-%m-%d %H:%M:%S'
2019-11-26 19:18:43
2019-11-26 17:20:43
[root@xxx ~]# date -d 'yesterday' '+%Y-%m-%d %H:%M:%S'
2019-11-25 19:19:06
[root@xxx ~]# date -d '-3 days' '+%Y-%m-%d %H:%M:%S'
2019-11-23 19:19:55
[root@xxx ~]# date -d 'tomorrow' '+%Y-%m-%d %H:%M:%S'
2019-11-27 19:20:12
[root@xxx ~]#

转格式

# date -d "2020-03-02" +"%Y/%m/%d %H:%M:%S"
2020/03/02 00:00:00

计算执行命令花费的时间,caltime.sh内容如下

#!/bin/bash
start=$(date +%s)
find /opt -name template* &> /dev/null
end=$(date +%s)
delta=$(( end - start ))
echo It takes $delta seconds.

执行结果:It takes 1 seconds.

把查找路径改成 “/” ,执行结果: It takes 8 seconds.

结合定时任务,每天定时将模板文件中的日期更新

#!/bin/bash
today=`date "+%y-%m-%d"`
yesterday=`date -d "-1 day" "+%y-%m-%d"`
sed -i "s/$yesterday/$today/g" /srv/dailytem.log


 

参考资料:

菜鸟教程  https://www.runoob.com/linux/linux-comm-date.html

发布了89 篇原创文章 · 获赞 1 · 访问量 4837

猜你喜欢

转载自blog.csdn.net/wy_hhxx/article/details/103253676