Linux里面date -d命令作用是什么?
发布网友
发布时间:2022-03-25 05:51
我来回答
共2个回答
热心网友
时间:2022-03-25 07:21
date -d 的一下常用示例与说明:
date -d ‘2 days ago’ //显示2天以前的时间
date -d ‘60 second ago’ //显示60秒以前的时间
date -d '3 months 1 day' //显示3月零1天以后的时间
date -d '25 Dec' +%j //显示12月25日在当年的哪一天
date -d '1970-01-01 00:00:30 +0000' +%s //自UTC 时间 1970-01-01 00:00:00 以来所经过的秒数
热心网友
时间:2022-03-25 08:39
范例8-46:通过参数-d显示指定字符串所描述的时间例子。
[root@oldboy ~]# date +%F -d "-1day" #<==显示昨天(简洁写法)。
2017-07-05
[root@oldboy ~]# date +%F -d "yesterday" #<==显示昨天(英文写法)。
2017-07-05
[root@oldboy ~]# date +%F -d "-2day" #<==显示前天。
2017-07-04
[root@oldboy ~]# date +%F -d "+1day" #<==显示明天。
2017-07-07
[root@oldboy ~]# date +%F -d "tomorrow" #<==显示明天(英文写法)。
2017-07-07
[root@oldboy ~]# date +%F -d "+2day" #<==显示2天后。
2017-07-08
[root@oldboy ~]# date +%F -d "1month" #<==显示1个月后。
2017-08-06
[root@oldboy ~]# date +%F -d "1year" #<==显示1年后。
2018-07-06
#<==说明:这里的+号表示未来,-号表示过去,day表示日,year表示年,month表示月
[root@oldboy ~]# date +%F -d "24hour"
2017-07-07
[root@oldboy ~]# date +%F -d "1440min"
2017-07-07
[root@oldboy ~]# date +%F -d "-1440min"
2017-07-05
说明:这里的hour表示小时,min表示分。
范例8-47:时间格式转换例子。
[root@oldboy ~]# date -d "Thu Jul 6 21:41:16 CST 2017" "+%Y-%m-%d %H:%M:%S"
2017-07-06 21:41:16
说明:-d选项后面接上需要转化的时间,最后再接上你想要输出的时间格式。
下面是一个企业面试题,转换日志的时间格式,会利用到上面的知识点,同时还使用了awk命令。
备用数据如下:
[root@oldboy ~]# cat test.log
Sat May 19 13:40:02 CST 2019 is 13213213
Sat May 19 19:37:43 CST 2019 is 1012122
Sat May 19 13:40:03 CST 2019 is 13213213
Sat May 19 19:37:42 CST 2019 is 1012122
Sat May 19 13:40:03 CST 2019 is 13213213
Sat May 19 19:37:43 CST 2019 is 1012122
解答过程:
[root@oldboy ~]# awk -F "is" '{print "echo $(date -d \""$1"\" \"+%F %T \")",$2}' test.log
#<==对内容按照命令进行拼接。
echo $(date -d "Sat May 19 13:40:02 CST 2019 " "+%F %T ") 13213213
echo $(date -d "Sat May 19 19:37:43 CST 2019 " "+%F %T ") 1012122
echo $(date -d "Sat May 19 13:40:03 CST 2019 " "+%F %T ") 13213213
echo $(date -d "Sat May 19 19:37:42 CST 2019 " "+%F %T ") 1012122
echo $(date -d "Sat May 19 13:40:03 CST 2019 " "+%F %T ") 13213213
echo $(date -d "Sat May 19 19:37:43 CST 2019 " "+%F %T ") 1012122
[root@oldboy ~]# awk -F "is" '{print "echo $(date -d \""$1"\" \"+%F %T \")",$2}' test.log|bash
2019-05-19 13:40:02 13213213
2019-05-19 19:37:43 1012122
2019-05-19 13:40:03 13213213
2019-05-19 19:37:42 1012122
2019-05-19 13:40:03 13213213
2019-05-19 19:37:43 1012122
#<==命令说明:使用is作为分隔符,$1是“Sat May 19 13:40:02 CST 2019”,$2是“13213213”,首先使用date命令将原时间格式进行转换,然后用awk拼凑出如下格式,最后使用bash执行命令。