0

以下是两个日志的第一行和最后一行我想知道这两个日志之间的时间差。

信息 2013 年 10 月 2 日 02:13:36,200 vert.x-eventloop-thread-1 [2514751586306/entityCrawl] [oiq.whiteboard.CrawlHandler] - 公司启动

信息 2013 年 10 月 5 日 02:13:36,200 vert.x-eventloop-thread-1 [2514735333378/entityCrawl] [oiq.whiteboard.CrawlHandler] - 公司完成 [4293663 毫秒]

我使用了以下程序

#!/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

时间差异=72:00:00

4

1 回答 1

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 
))
于 2013-10-05T13:55:18.477 回答