我有两个变量。
GMDCOMTM which stores the date time Tue Oct 1 13:32:40 2013
GMDRRSTM which stores the date time Tue Oct 2 23:35:33 2013
如何计算hh:mm:ss格式和存储中的2个变量之间的差异 它在第三个变量。?我不想使用AWK,SED或PERL。我想使用简单的shell 脚本来做它。
答案 0 :(得分:0)
将日期转换为%s ---> seconds since 1970-01-01 00:00:00 UTC
。
$ date -d"Tue Oct 2 23:35:33 2013" "+%s"
1380749733
所以问题是使用bc
作为计算器来获取两个日期之间的差异:
$ d1="Tue Oct 1 13:32:40 2013"
$ d2="Tue Oct 2 23:35:33 2013"
$ echo $(date -d"$d2" "+%s") - $(date -d"$d1" "+%s") | bc
122573
然后,您可以使用great function Stéphane Gimenez indicates in UNIX & Linux
将其分为几小时,几天$ displaytime 122573
1 days 10 hours 2 minutes and 53 seconds
答案 1 :(得分:0)
C=$(date -d "Tue Oct 1 13:32:40 2013" +%s)
R=$(date -d "Tue Oct 2 23:35:33 2013" +%s)
T=$(date --date=@$((R-C)) +%H:%M:%S)
答案 2 :(得分:0)
我正常使用自定义功能进行计算。它可能很长,但它肯定适用于所有基于UNIX和Linux的系统。在代码块之后。
time_diff(){
foodate1=$1
foodate2=$2
foosecvall=`echo $foodate1 | awk -F: '{ print ($1 * 3600) + ($2 * 60) + $3 }'`
foosecval2=`echo $foodate2 | awk -F: '{ print ($1 * 3600) + ($2 * 60) + $3 }'`
foodiffsec=$((foosecvall-foosecval2));
s=$foodiffsec
h=$((s/3600));
s=$((s-$((h*3600))));
m=$((s/60));
s=$((s-$((m*60))));
footmstm=$h":"$m":"$s
}
将上述代码放在脚本中,然后调用函数,如下所示。
TIME1="10:12:14"
TIME2="12:15:14"
time_diff $TIME2 $TIME1
echo $footmstm