プロが教えるわが家の防犯対策術!

日付計算系の質問はたくさんありましたがこのタイプが
無かったんで質問させていただきます。

やりたいことは題名そのまんまなんですが、具体的に言う
と、UNIX(今使ってるのがHP-UX11.0)上のバッチシェル
で、前日の日付を取得したいのです。できれば中間ファ
イル(一時ファイル)などを生成せずにシェル内で計算を
済ませたいのですが、何か方法はないのでしょうか。

(Ex.)
現在の日付   2002年1月1日
取得したい日付 2001年12月31日

具体的な方法とか書いてあるとさらにうれしいのですが・・・

それではよろしくお願いします。

A 回答 (3件)

環境変数 TZ をいじることで実現できるはずです。



お使いの環境は日本標準時(TZ が JST-9)だと想定して話をします。

環境変数 TZ の -9 は、グリニッジ標準時との ずれ を表しているわけですが、
これを一日前にずらしてしまいます。

具体的には、こんな感じ。

% env TZ=JST+15 date


GNU のコマンドが席巻するまでは、割と有名だったやり方です。
もうひとつのやり方として、GNU の date をインストールして No.1 の回答の
ようにする、という手もありますね。
    • good
    • 0
この回答へのお礼

上記のコマンドを実行したらきっちり前日の日付が出てきました。どうやら、条件を満たすのはこれが一番みたいですね。
情報提供ありがとうございました。

お礼日時:2001/12/13 17:50

他の方がおっしゃるとおり、 GNU の date をインストールしてよい環境であれば、それを使うのが一番楽だと思います。


ただ、HP-UX のデフォルトのdate だと、現在日付しか扱えないんですよね。

ニュースグループの fj.unix.shells で、1999年の7月頃この話題が出ていたようです。

下のサイトの[保存された記事を読む]でグループ名にfj.unix.shells 、期間に199907 を指定して見てみてください。

参考URL:http://queen.heart.ne.jp/cgi-bin/queen4
    • good
    • 0
この回答へのお礼

情報提供ありがとうございます。
参照先の情報はほぼGNU版dateとTZを使ったやり方しか載っていませんでした。
それではかなり参考になりました。

お礼日時:2001/12/13 17:48

HP-UXは使用していないので判りませんが、Linux上では



date --date '1 days ago'

とやると昨日の日付が取得出来ます。
オプション等が異なるかもしれませんが、dateコマンドのmanを引くと同様のオプションがあるかもしれませんのでご覧下さい。
後は出力形式のオプションを付加すればお望みの形で出力出来ると思うのですが…。

この回答への補足

回答ありがとうございます。
HP-UX上では残念ながら上記の書式はサポート
されていませんでした。
(dateはあくまで現在の日付の表示、又は日付設定)
なので引き続きアドバイスか何か遭ったらよろしくお願いします。

補足日時:2001/12/13 11:44
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!