以下是两个日志第一行和最后一行我想知道这两个日志之间的时差。
INFO 02 Oct 2013 02:13:36,200 vert.x-eventloop-thread-1 [2514751586306 / entityCrawl] [oiq.whiteboard.CrawlHandler] - 公司开始
INFO 05 Oct 2013 02:13:36,200 vert.x-eventloop-thread-1 [2514735333378 / entityCrawl] [oiq.whiteboard.CrawlHandler] - 公司完成[4293663 ms]
我使用了以下程序
#!/bin/bash
START=$(date --date="$1" +"%s")
ND=$(date --date="$2" +"%s")
DIFFSEC=$(($END-$START))
time=`date +%H:%M:%S -ud @${DIFFSEC}`
echo "$time" | awk -F':' '{ print $1*3600 + $2*60 + $3 }'
但它没有给我正确的时差请给我一个程序来解决这个问题
预期产出:
开始时间= 2013年10月2日02:13:36
结束时间= 2013年10月5日02:13:36
timeDiff测量= 72:00:00
答案 0 :(得分:1)
date
为您提供一天中的时间,而不是持续时间。它很简单,可以将diff值转换为小时,分钟,秒,这是一个简单的算术问题。
diff=123456
(( hours = diff / 3600 ))
(( mins = (diff - hours*3600) / 60 ))
(( secs = diff % 60 ))
printf "%d:%02d:%02d\n" $hours $mins $secs
34:17:36
Bash甚至允许您将所有数学运算放入单个算术表达式中,如果您想:
((
hours = diff / 3600,
mins = (diff - hours*3600) / 60,
secs = diff % 60
))