date コマンドで前月を取得する
dateコマンドで前月の日付を取得するには「1 month ago」のオプションを付けると一ヶ月前の値を取得ることが出来ます。
$ date +'%Y-%m-%d' 2020-11-04 $ date -d '1 month ago' +'%Y-%m-%d' 2020-10-04
但し、こちらは一ヶ月が31日ある月だと、一ヶ月前は前月にならずにばらつきがあります。
3月31日の場合は、3月3日、7月31日の場合は、7月31日、12月31日の場合は、12月1日となり前月になりません。
一ヶ月が30日の場合は、前月表示になるので問題ありません。
# 一ヶ月が31日の場合 $ date -d '2019/03/31 1 month ago' +'%Y-%m-%d' 2019-03-03 $ date -d '2019/08/31 1 month ago' +'%Y-%m-%d' 2019-07-31 $ date -d '2019/12/31 1 month ago' +'%Y-%m-%d' 2019-12-01 # 一ヶ月が30日の場合 $ date -d '2019/09/30 1 month ago' +'%Y-%m-%d' 2019-08-30 $ date -d '2019/11/30 1 month ago' +'%Y-%m-%d' 2019-10-30
31日ある場合は、異なった前月になるので、前月を求める場合は月初めから1日引いた方が無難です。シェルスクリプトで書くと以下のようになります
#!/bin/bash DATE=2019/03/31 echo $DATE MON1=`date -d $DATE +'%Y-%m-01'` echo "Beginning of the month: $MON1" MON2=`date -d "${MON1} 1 day ago" +'%Y-%m-%d'` echo "at the end of the last month: $MON2"
シェルスクリプトを実行すると、以下のように前月の末日が表示されます
$ sh test.sh 2019/03/31 Beginning of the month: 2019-03-01 at the end of the last month: 2019-02-28
ディスカッション
コメント一覧
まだ、コメントがありません