dateコマンドで1年分の日付を取得する
Pocket

先日出席したシェル芸勉強会で、処理の途中で一年分(というか、指定期間)の日付をdateコマンドで出力させる必要があった。
で、日単位であれば以下のようにコマンドを実行することで、一覧として出力可能だ。

echo '2016/01/01\ +'{0..365}'\ days' | LANG=C xargs -n1 date -d

 

わかりやすいかどうかわからないけど、解説。
dateコマンドの-d(–date)オプションでは、以下のように”日付 + ○ (days|month)”などのように、日付を計算させることが出来るのだ。
例えば、「2016/01/01 + 1 month」とすると…

[root@test-node ~]# date -d '2016/01/01 + 1 month'
2016年  2月  1日 月曜日 00:00:00 JST
Sponsored Links

と、このように1ヶ月後の日付を取得できるのだ。
つまり、-dでこのように”計算”できるようにechoで渡す事で、指定した日から○○日間(-で前の日付も出来る)の日付だけを出力させることが出来る。

[root@test-node ~]# echo '2016/01/01\ +'{0..13}'\ days' | LANG=C xargs -n1 date -d
Fri Jan  1 00:00:00 JST 2016
Sat Jan  2 00:00:00 JST 2016
Sun Jan  3 00:00:00 JST 2016
Mon Jan  4 00:00:00 JST 2016
Tue Jan  5 00:00:00 JST 2016
Wed Jan  6 00:00:00 JST 2016
Thu Jan  7 00:00:00 JST 2016
Fri Jan  8 00:00:00 JST 2016
Sat Jan  9 00:00:00 JST 2016
Sun Jan 10 00:00:00 JST 2016
Mon Jan 11 00:00:00 JST 2016
Tue Jan 12 00:00:00 JST 2016
Wed Jan 13 00:00:00 JST 2016
Thu Jan 14 00:00:00 JST 2016

 

Pocket

Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

メールアドレスが公開されることはありません。