前日の日付を得る
シェルスクリプトで前日の日付を得る方法。というか、date -vが使えない場合のワザね。
Perlだったら、time()から24時間ぶんの秒数を引いたものをlocaltimeの引数にする方法が一般的。たとえば「20040720」みたいな日付を得たい場合は、
($sec, $min, $hour, $mday, $mon, $year) = localtime(time() - 86400);
$year += 1900;
$mon++;
printf("%04d%02d%02d", $year, $mon, $mday);
しかしながら、シェルスクリプトのdateコマンドでは、この方法は使えない。一応、date +%sで、1970年1月1日00:00:00からの秒数を得ることはできるけどね。で、いろいろ検索していたら、以下のような裏技を知った。
env TZ=JST+15 date +%Y%m%d
つまり、システムのTZ環境変数を使って、無理矢理24時間前にずらすという方法。日本時間がGMT+9、つまりTZ=JST-9なので、24時間前はJST+15という考え方。ものすごい強引なワザだけど、スクリプトがこんなにスリムになるのはあっぱれ。
トラックバック(0)
このブログ記事を参照しているブログ一覧: 前日の日付を得る
このブログ記事に対するトラックバックURL: http://somin.heteml.jp/mt/mt-tb.cgi/4303
コメントする