簡體   English   中英

使用awk計算時差

[英]Calculate time difference using 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

我有以下代碼,但看起來小時顯示不准確。 請幫忙。

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

我得到這樣的輸出。

P1,4.42222 hrs
P2,4.41972 hrs

但應該在4:25:20小時4:25:11之間顯示差異

提前致謝

如果要以HH:MM:SS語法打印若干秒,則需要自己進行計算。 如果要打印,例如4:02:30而不是4:2:30,則使用printf將非常有用。 例如,

secs = d2 - d1;
printf "%s, %d:%02d:%02d hrs.\n", $1, int(secs/3600), int(secs/60)%60, secs%60
$ cat tst.awk
BEGIN { FS=",[[:space:]]+"; OFS="," }
function dt2secs(dt) { return mktime(gensub(/[-:]/," ","g",dt)) }
function secs2hms(s) { return sprintf("%d:%02d:%02d hrs",s/(60*60),(s/60)%60,s%60) }
{ print $1, secs2hms(dt2secs($3)-dt2secs($2)) }

$ awk -f tst.awk file
P1,4:25:20 hrs
P2,4:25:11 hrs

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM