date --date で書式を指定すれば、自由自在に日付計算ができる。一か月前とか18年前とか5日後とかの日付や曜日を簡単に求められる。また、+%Y などの出力書式文字列と同時に使うこともできるので、日付と時刻を好きな形式で整形して文字列として出力できる。
JM 読んでたらしっかり書いてあった。
date date.1 in GNU_sh-utils
http://www.linux.or.jp/JM/html/GNU_sh-utils/man1/date.1.html
perl の Date::Calc モジュールも調べてみたんだけど、
一行プログラムを書くときは date コマンドの方が使いやすそう。
ハイフン - を入れない YYYYmmdd 文字列がほしいなら、%Y%m%d と書けばよい。
注意。上記の例は結果を2000年9月13日にしたいがために、事前に以下のコマンドを実行してシステムクロックを変更してあります。
JM 読んでたらしっかり書いてあった。
date date.1 in GNU_sh-utils
http://www.linux.or.jp/JM/html/GNU_sh-utils/man1/date.1.html
perl の Date::Calc モジュールも調べてみたんだけど、
一行プログラムを書くときは date コマンドの方が使いやすそう。
- YYYY-mm-dd や YYYYmmdd 文字列を得る
%F で YYYY-mm-dd 文字列を得ることができる。数字が一桁の場合はゼロ詰めされる。%Y-%m-%d と書いても同じ。%F same as %Y-%m-%d
$ date +%F
2004-06-24
ハイフン - を入れない YYYYmmdd 文字列がほしいなら、%Y%m%d と書けばよい。
$ date +%Y%m%d
20040624
- HH:MM:SS 文字列を得る
時分秒がほしいなら、%T を使う。数字が一桁の場合はゼロ詰めされる。コロンを入れたくないなら、%H%M%S と書けばよい。$ date +%T
10:50:02
$ date +%H%M%S
105007
- apache のログを grep するために、一か月前の月名と西暦を得る
$ date --date '1 month ago' +%b/%Y:ちなみに apache のログはこんな感じ。
Sep/2003:
10.3.31.91 - - [29/Oct/2003:09:40:53 +0900] "POST /cgi-bin/hiroaki/bad.cgi/read HTTP/1.1" 500 615
- 10日後
$ date --date '10day' +%Y%m%d
20031108
- 「・・・15年ぶりだね」
$ date --date '15 year ago'
Wed Sep 13 15:48:42 JST 2000
注意。上記の例は結果を2000年9月13日にしたいがために、事前に以下のコマンドを実行してシステムクロックを変更してあります。
# date --set 2015-09-13
- ago の位置で結果が変わる
ago より前の指定を現在から引き算しているようだ。複雑なのであんまり深追いしたくないな。$ date --date '4year ago 2month 5day 2hour 8minute 58second'
Mon Jan 3 18:03:24 JST 2000
$ date --date '4year 2month ago 5day 2hour 8minute 58second'
Fri Sep 3 18:03:31 JST 1999
以上の内容はhttp://sonic64.com//2003-10-29.htmlより取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます
モバイルやる夫Viewer Ver0.14