シェルスクリプトを使用して2つの日付を減算する

シェルスクリプトを使用して2つの日付を減算する

シェルスクリプトを使用してepoch形式から2つの日付を減算する方法。月、日、時間形式で出力したいです。そして12ヶ月以上動作しなければなりません(12ヶ月を超えると0ヶ月にリセットされることもありました)。

答え1

次のようにしてみてください。

#!/bin/bash

d1=`date -d 20140929 +%s`
d2=`date -d 20001115 +%s`

date --date=@$(($d1 - $d2)) +'%m months, %d days, %H hours'

出力:

11 months, 15 days, 02 hours

答え2

#!/bin/bash

d=(60sec 60min 24hours 30days 12month 1000year)
i=0

while [ $1 -ge ${d[i]%%[a-z]*} ]
do
    set -- $(($1/${d[i]%%[a-z]*})) $(($1%${d[i]%%[a-z]*})) ${d[i]##*[0-9]} ${*:2}
    ((i++))
done 
echo $1 ${d[i]##*[0-9]} ${*:2}

関連情報