Linuxコマンド: date で◯か月前 / ◯か月後を取得するときの注意
date コマンドは、日付を取得したり、整形して表示したり、◯日後や◯か月後、◯年前の日付を表示したりすることができます。 ◯か月前や◯か月後を使用する時が曲者で、月末に近い日に実行すると、思っていた動作をしてくれないことがあります。 $ date 2015年 9月 6日 日曜日 16:05:22 JST $ date -d "2015-08-31" 2015年 8月 31日 月曜日 00:00:00 JST $ date -d "2015-08-31 1 month" 2015年 10月 1日 木曜日 00:00:00 JST $ date -d "2015-01-31 1 month" 2015年 3月 3日 火曜日 00:00:00 JST 8月31日の1か月後が10月1日になったり、1月31日の1か月後が3月3日になったりします。月によって◯か月後の計算をきちんとしてくれるわけではないようです。 実施日の翌月末を取得するには、実施月の 1日に変換してから、2ヶ月後の1日前を指定することで取得できます。 $ date -d "`date '+%Y/%m/01' -d "\`date '+%Y/%m/01' \` 2 month"` 1 day ago" 2015年 10月 31日 土曜日 00:00:00 JST 指定した日付の翌月の月末を取得する場合は、以下のように書きます。 $ date -d "`date '+%Y/%m/01' -d "\`date '+%Y/%m/01' -d 2015/08/31\` 2 month"` 1 day ago" 2015年 8月 31日 月曜日 00:00:00 JST $ date -d "`date '+%Y/%m/01' -d "\`date '+%Y/%m/01' -d 2015/01/31\` 2 month"` 1 day ago" 2015年 2月 28日 土曜日 00:00:...