1

私は2つの変数を持っています。

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

2 つの変数の差を hh:mm:ss 形式で計算し、それを 3 番目の変数に格納するにはどうすればよいですか? AWK、SED、PERL は使いたくありません。簡単なシェルスクリプトを使用してそれを行いたいです。

4

3 に答える 3

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
于 2014-08-04T17:52:40.747 に答える
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

その後、 Stéphane Gimenez が UNIX および Linux で示した優れた機能を使用して、数時間、数日でそれを取得できます。

$ displaytime 122573
1 days 10 hours 2 minutes and 53 seconds
于 2013-11-11T11:24:46.317 に答える