linux + X日を追加して新しい仮想日付を取得


115

Linux(RH 5.3)マシンがあります

10日と日付を追加/計算する必要があるので、新しい日付(有効期限)を取得します)

例えば

 # date 
 Sun Sep 11 07:59:16 IST 2012

だから私は取得する必要があります

     NEW_expration_DATE = Sun Sep 21 07:59:16 IST 2012

新しい有効期限の計算方法をアドバイスしてください(bash、ksh、またはdateコマンドの操作?)

回答:


158

-dスイッチを使用して、計算する日付を指定するだけです

date
Sun Sep 23 08:19:56 BST 2012
NEW_expration_DATE=$(date -d "+10 days")
echo $NEW_expration_DATE
Wed Oct 3 08:12:33 BST 2012 
  -d, --date=STRING
          display time described by STRING, not now

次のようなことができるので、これは非常に強力なツールです

date -d "Sun Sep 11 07:59:16 IST 2012+10 days"
Fri Sep 21 03:29:16 BST 2012

または

TZ=IST date -d "Sun Sep 11 07:59:16 IST 2012+10 days"
Fri Sep 21 07:59:16 IST 2012

または

prog_end_date=`date '+%C%y%m%d' -d "$end_date+10 days"`

したがって、$ end_date = 20131001の場合は$ prog_end_date = 20131011


2
ありがとうございました!!あなたの例はGNU dateinfoページにあるはずです!
デイヴァーCubranic

これができるとは知らなかった-それは本当にいい解決策だ。
ティムシード

1
+1:素晴らしい。役に立つ答え。
copper.hat

1
OS Xでビルド日付を使用すると、エラーが発生します。brew install coreutilsGNUの日付関数をインストールするために使用しgdateます。
いとこコカイン

2
動作しない: $ docker run -it bash bash bash-5.0# date -d "+10 days" date: invalid date '+10 days' bash-5.0#
クリスチャンボンジョルノ

37

「+ x日」をフォーマット文字列として使用できます。

$ date -d "+10 days"

20
$ date -v -1d

dateコマンドを使用して1日前の日付を取得するには:

$ date -v -1d

(現在の日付-1)は1日前を意味します。

$ date -v +1d

これにより、(現在の日付+1)は1日後を意味します。

同様に、以下に記述されたコードを「d」の代わりに使用して、年、月などを見つけることができます。

y-Year
m-Month 
w-Week 
d-Day 
H-Hour 
M-Minute  
S-Second

8
これは私のMacでは動作しますが、Gentooサーバーでは動作しません。
マイクドッター

受け入れられている答えよりもはるかに優れており、これにより任意の日付形式も1行で可能になります。
プフェレル

9
これはUbuntu 15.10またはRedHat 6.6では機能しません。RH5.3でも動作しないと思います。理由:「
v

2
これはのためのUnix / BSD構文であるように見えますがdate、GNU dategdate多くのBSDで)はサポートしていません。GNU dateは、受け入れられた答えの構文を使用します。常に覚えておいてください:GNUはUnixではない!
ベーコンビット

1
@BaconBits-しかし、もしあなたがrmsなら、多くのGNU utilコードがLinuxに移植されているため、「Linux is GNU」だと主張できます。もちろん、GNU Hurd(FSFのOnce-And-Future-OS)がかろうじてのものであるという事実を除いて。私がうんざりすることは、彼が時間を費やしている間、Linusはコードを書くことに時間を費やしていることだと思います。:
ボブジャービス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.