お探しのツールは faketime
です .
faketime 'yesterday 9am' /bin/date
faketime '2018-10-25 16:45' /bin/date
存在しない任意のタイムゾーン名を使用して、最大 +-24 時間までの時間を設定することができます。 MYFAKETIME
と仮定すると 有効なタイムゾーンとして存在しません (まだありませんが、将来定義される可能性があります (ほとんどありません))、これは可能です:
[email protected]:~$ date
Sun Sep 30 01:22:05 EST 2018
[email protected]:~$ TZ=MYFAKETIME date
Sun Sep 30 06:22:43 MYFAKETIME 2018
[email protected]:~$ TZ=MYFAKETIME+1 date
Sun Sep 30 05:22:56 MYFAKETIME 2018
[email protected]:~$ TZ=MYFAKETIME+10 date
Sat Sep 29 20:23:00 MYFAKETIME 2018
[email protected]:~$ TZ=MYFAKETIME+20 date
Sat Sep 29 10:23:05 MYFAKETIME 2018
[email protected]:~$ TZ=MYFAKETIME+24 date
Sat Sep 29 06:23:08 MYFAKETIME 2018
[email protected]:~$ TZ=MYFAKETIME+48 date
Sat Sep 29 06:23:14 MYFAKETIME 2018
[email protected]:~$ TZ=MYFAKETIME+96 date
Sat Sep 29 06:23:25 MYFAKETIME 2018
[email protected]:~$
24 を超えるタイムゾーンは機能しないことに注意してください。 しない 時間を変更しますが、範囲は -24
に制限されています +24
まで . 21.4.7 から TZ によるタイムゾーンの指定
最初の形式は、ローカル タイム ゾーンに夏時間 (または夏時間) がない場合に使用されます。
std offset
std 文字列は、タイム ゾーンの名前を指定します。 3 文字以上である必要があります long であり、先頭のコロン、埋め込まれた数字、コンマ、およびプラス記号とマイナス記号を含んではなりません。タイム ゾーン名とオフセットを区切るスペース文字がないため、これらの制限は仕様を正しく解析するために必要です。
オフセットは、協定世界時の値を取得するために現地時間に追加する必要がある時間値を指定します。 [+|-]hh[:mm[:ss]] のような構文があります。これは、ローカル タイム ゾーンが本初子午線の西の場合は正、東の場合は負です。時間は 0 から 24 の間である必要があります 、および 0 から 59 までの分と秒。
そのため、TZ 変数を使用して時刻を「将来の日数」に変更する方法はありません。
本当の解決策は faketime
を使うことです ユーティリティ (同名のパッケージから)。
これにより、次のことが可能になります:
[email protected]:~$ faketime '2008-12-24 08:15:42' /bin/date
Wed Dec 24 08:15:42 EST 2008
[email protected]:~$ date
Sun Sep 30 01:44:29 EST 2018
TZ
を設定するだけです 変数。正の値は東に行くため、後ろ GMT.
例
$ TZ=GMT date
Sat Sep 29 19:12:30 GMT 2018
$ TZ=FAKEEAST+15 date
Sat Sep 29 04:12:36 FAKEEAST 2018
$ TZ=FAKEWEST-15 date
Sun Sep 30 10:12:41 FAKEWEST 2018
これにより、+/- 24 時間しか使用できなくなります。