2

次のコードを使用して、前日の日付を昨日の変数に割り当てています。

yesterday=`TZ=GMT+24 date +%Y%m%d`;
echo $yesterday;

早朝にコマンドを実行すると、値が正しく割り当てられます。しかし、夜間 (午後 9 時頃) には、前日の日付ではなく、今日と同じ日付になります。

私のサーバーは PDT timezeone にあります。割り当てに「TZ=PDT+24」を試してみましたが、同じ結果になりました。

参考までに、Solaris 5.10 を使用しています。

この奇妙な状況の理由は何でしょうか?

4

4 に答える 4

5

私は、solaris で正確なテストを行うことができません。しかし、Linuxでは、これは最終日(昨日)を取得するために機能します:

kent$ date -d'yesterday' +%Y%m%d
20130520

「yesterday」と入力するだけで、何か特別なことをする必要はありませんdate。かっこいいですね。

于 2013-05-21T09:46:48.600 に答える
1

Solaris では、Solaris のバージョンではなく GNU の日付を使用してください。gdateではなくでアクセスしdateます。次に、あなたは単に

gdate -d'yesterday' +%Y%m%d

Solaris システム管理者が、GNU coreutils (GNU date はそのパッケージの一部) がデフォルトでインストールされていない機能不全のホストを提供した可能性があります。彼を恥じてください。

Solaris ホストがどのように見えるべきかについての詳細は、このリンクを参照してください。リンクには、Solaris 10 と Solaris 11 の両方の情報があります。

于 2013-10-11T08:30:59.523 に答える
0

日付「-v」には特別な変数があり、-v -1d を追加して前日の記録を取得できます。Solarisでも問題なく動作するはずです。PDT タイムゾーンは問題にならない場合があります。

したがって、date -v -1d のようなコマンドを実行すると、昨日の日付が表示されます。

于 2013-10-01T18:04:07.310 に答える