使用awk计算时间差

use*_*663 5 bash shell awk

我有以下 input.txt 文件。我需要计算 2 美元和 3 美元的时间差并以小时为单位打印差值。

P1,       2016-05-30 00:11:20,    2016-05-30 04:36:40
P2,       2016-05-30 00:07:20,    2016-05-30 04:32:31
Run Code Online (Sandbox Code Playgroud)

我有以下代码,但看起来时间显示不准确。请帮忙。

awk -F, '{gsub(/[-:]/," ",$2);gsub(/[-:]/," ",$3);
          d2=mktime($3);d1=mktime($2);
          print $1","(d2-d1)/3600,"hrs";}' input.txt
Run Code Online (Sandbox Code Playgroud)

我得到这样的输出。

P1,4.42222 hrs
P2,4.41972 hrs
Run Code Online (Sandbox Code Playgroud)

但应该显示出差异 4:25:20 小时 4:25:11 小时

提前致谢

ric*_*ici 3

如果您想以 HH:MM:SS 语法打印秒数,则需要自己进行计算。printf例如,如果您想打印 4:02:30 而不是 4:2:30,则使用将非常有用。例如,

secs = d2 - d1;
printf "%s, %d:%02d:%02d hrs.\n", $1, int(secs/3600), int(secs/60)%60, secs%60
Run Code Online (Sandbox Code Playgroud)