linux + bugüne kadar X gün ekleyin ve yeni sanal tarih alın


115

Linux (RH 5.3) makinem var

10 gün artı tarih ekleyip hesaplamam gerekiyor, böylece yeni bir tarih alacağım (son kullanma tarihi)

Örneğin

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

Bu yüzden almam gerek

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

Lütfen yeni son kullanma tarihinin nasıl hesaplanacağını tavsiye edin (bash, ksh veya tarih komutunu işlemek mi?)

Yanıtlar:


158

Sadece -danahtarı kullanabilir ve hesaplanacak bir tarih belirleyebilirsiniz.

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

Bu gibi şeyler yapabileceğiniz gibi oldukça güçlü bir araçtır

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

veya

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

veya

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

Yani eğer $ end_date = 20131001 o zaman $ prog_end_date = 20131011


2
Teşekkür ederim!! Örnekleriniz GNU datebilgi sayfasında olmalı !
Davor Cubranic

Bunu yapabileceğimi asla bilmiyordum - bu gerçekten güzel bir çözüm.
Tim Seed

1
+1: Harika. Yararlı cevap.
copper.hat

1
OS X'te yerleşik tarih kullanılırken bir hata alırsınız. brew install coreutilsGNU’nun tarih fonksiyonunu kurmak için kullanın gdate.
Kuzen Kokain

2
çalışmıyor: $ docker run -it bash bash bash-5.0# date -d "+10 days" date: invalid date '+10 days' bash-5.0#
Christian Bongiorno,

37

"+ X days" ifadesini biçim dizgesi olarak kullanabilirsiniz:

$ date -d "+10 days"

20
$ date -v -1d

Date komutunu kullanarak 1 gün geri tarih almak için:

$ date -v -1d

1 gün önce (şimdiki tarih -1) verecek.

$ date -v +1d

Bu verecek (şimdiki tarih + 1) 1 gün sonra.

Benzer şekilde aşağıdaki kod yazılan yılı, ayı vb. Bulmak için "d" yerine kullanılabilir.

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

8
Bu benim için mac'ımda çalışıyor ama Gentoo sunucularımızda değil.
Mike Dotterer

Kabul edilen cevaptan çok daha iyi, bu, tek bir satırda da keyfi tarih biçimlerine izin veriyor.
pferrel

9
bu Ubuntu 15.10 veya RedHat 6.6 ile çalışmaz. RH5.3'te de çalışmadığını farz ediyorum. Sebep: '-v' ve '-1d', 'tarih' için geçerli bir anahtar değil
syss

2
Bu bir Unix / BSD sözdizimi olarak belirdi dateGNU en, date( gdatebirçok BSD üzerine) desteklemez. GNU’lar datekabul edilen cevapta sözdizimini kullanıyor. Her zaman hatırla: GNU's Unix!
Bacon

1
@BaconBits - ama GNU util kod bir sürü nedenle "Linux o Linux 'çünkü bunu iddia edemez rms iseniz olduğunu GNU". Tabii ki, GNU Hurd'un (FSF'nin Geleceğin-Geleceği-İşletim Sistemi) sadece zor bir şey olduğu gerçeği dışında. Sanırım rms'yi kızdıran şey, zamanını kestirerek harcadığı zaman Linus'un zaman kodunu harcadığıydı - ki bu, kastetmekten ziyade, kod yazarsanız çalışma yazılımı yaratmanızın daha muhtemel olduğuna dair kanıt olarak ortaya çıkıyor. :-)
Bob Jarvis
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.