2つの年月日から経過日数を表示する Bash スクリプト (Mac・Windows 両対応)
2つの年月日から経過日数を表示する Bash スクリプトを作った。MacOS・Windows GitBash の両対応。
date-diff.bash
#!/bin/bash
# 'YYYY-MM-DD' 形式で2つの年月日を指定させる
date_1="$1"
date_2="$2"
if [ -z "$date_1" -o -z "$date_2" ]; then
echo '日付を指定してください'
exit 1
fi
# 'YYYY-MM-DD' 形式からシリアル値に変換する (日付の形式チェックをしていない)
if [ "$(uname)" == "Darwin" ]; then
# Mac
date_1_serial=`date -j -f "%Y-%m-%d" "$date_1" "+%s"`
date_2_serial=`date -j -f "%Y-%m-%d" "$date_2" "+%s"`
else
# Windows GitBash・GNU Linux
date_1_serial=`date -d "$date_1" +%s`
date_2_serial=`date -d "$date_2" +%s`
fi
# シリアル値がより大きい方から除算する
if [ "$date_1_serial" -gt "$date_2_serial" ]; then
diff_days=$(( ($date_1_serial - $date_2_serial) / 60 / 60 / 24 ))
else
diff_days=$(( ($date_2_serial - $date_1_serial) / 60 / 60 / 24 ))
fi
# 経過日数を表示する
if [ "$diff_days" == "1" ]; then
echo "$diff_days Day"
else
echo "$diff_days Days"
fi
コレを date-diff
みたいな名前で PATH の通っているところに保存して実行権を設定する。あとは以下のように叩く。
$ date-diff 2019-01-01 2018-01-01
365 Days
$ date-diff 2019-01-01 2019-02-01
31 Days
2つの引数は YYYY-MM-DD
形式のみ正常に処理できる。第1引数と第2引数のどちらが新しくても古くても大丈夫。