前日の日付を得る

シェルスクリプトで前日の日付を得る方法。というか、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

コメントする

このブログ記事について

このページは、Sominが2004年7月20日 20:43に書いたブログ記事です。

ひとつ前のブログ記事は「天気予報を自動メール送信」です。

次のブログ記事は「メールの捨て方」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。