2011年10月10日月曜日

date コマンドで先月を求める方法

date コマンドには、last month という指定があり、これで先月を求められると思ったのですが、次のように変なことになってしまう場合があります。
# date -d "2011-03-30 last month" +"%F"
2011-03-02
調べてみると、次のような情報がありました。
http://www.walkernews.net/2007/06/03/date-arithmetic-in-linux-shell-scripts/

つまり、次のように細工すれば良いとのことです。なお、15 の部分は、全ての月で存在する日付(01~28)のどれかを指定すれば良いので、01 でも大丈夫です。
# date -d "$(date +%Y-%m-15) -1 month" +%Y-%m
2011-09
同様に、先々月だったら、次のように -2 にすれば良いです。
# date -d "$(date +%Y-%m-15) -2 month" +%Y-%m
2011-08

■関連記事
ZFS on Linux の snapshot 運用スクリプト例

0 件のコメント:

コメントを投稿

人気ブログランキングへ にほんブログ村 IT技術ブログへ