linux + X को तारीख में जोड़ें और नई आभासी तारीख प्राप्त करें


115

मेरे पास लिनक्स (आरएच 5.3) मशीन है

मुझे 10 दिनों की तारीख जोड़ने / गणना करने की आवश्यकता है, तो मुझे नई तिथि (समाप्ति तिथि) मिलेगी

उदाहरण के लिए

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

इसलिए मुझे प्राप्त करने की आवश्यकता है

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

कृपया सलाह दें कि नई समाप्ति तिथि की गणना कैसे करें (बैश, ksh के साथ, या दिनांक आदेश में हेरफेर करें?)

जवाबों:


157

आप बस -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 dateजानकारी पृष्ठ में होने चाहिए !
क्यूबेरिक

कभी नहीं पता था कि मैं ऐसा कर सकता हूं - यह एक बहुत अच्छा समाधान है।
टिम बीज

1
+1: बहुत बढ़िया। उपयोगी उत्तर।
ताम्र।

1
OS X पर बिल्ड-इन का उपयोग करते समय आप एक त्रुटि प्राप्त करेंगे। का प्रयोग करें brew install coreutils, जीएनयू की तारीख समारोह स्थापित करने के लिए gdate
कज़िन कोकीन

2
काम नहीं करता है: $ docker run -it bash bash bash-5.0# date -d "+10 days" date: invalid date '+10 days' bash-5.0#
क्रिश्चियन Bongiorno

38

आप प्रारूप स्ट्रिंग के रूप में "+ x दिन" का उपयोग कर सकते हैं:

$ date -d "+10 days"

20
$ date -v -1d

दिनांक आदेश का उपयोग करके 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
यह मेरे लिए मेरे मैक पर काम करता है, लेकिन हमारे Gentoo सर्वर पर नहीं।
माइक डॉटर

स्वीकृत उत्तर की तुलना में बहुत बेहतर है, यह एक ही पंक्ति में मनमाने ढंग से दिनांक प्रारूपों के लिए भी अनुमति देता है।
१६:१५ को १६

9
यह Ubuntu 15.10 या RedHat 6.6 पर काम नहीं करता है। मुझे लगता है कि यह RH5.3 पर भी काम नहीं करता है। कारण: '-v' और '-1d' 'तारीख' के लिए कोई वैध स्विच कर रहे हैं
syss

2
यह एक यूनिक्स / बीएसडी सिंटैक्स प्रतीत होता है date, जिसके लिए जीएनयू date( gdateकई बीएसडी पर) समर्थन नहीं करता है। GNU dateस्वीकृत उत्तर में वाक्य रचना का उपयोग करता है। हमेशा याद रखें: जीएनयू का यूनिक्स नहीं है!
बेकन बिट्स

1
@BaconBits - लेकिन आप आरएमएस आपको लगता है कि दावा कर सकते हैं क्योंकि जीएनयू util कोड का एक बहुत लिनक्स पर वापस पोर्ट दिया गया है कि इसलिए "लिनक्स कर रहे हैं है जीएनयू"। इसके अलावा, निश्चित रूप से, इस तथ्य के लिए कि जीएनयू हर्ड (एफएसएफ का वन्स-एंड-फ्यूचर-ओएस) केवल एक चीज है। मुझे लगता है कि पेशाब बंद हो जाता है वह यह है कि जब वह अपना समय व्यतीत कर रहा था, लिनुस ने अपना समय कोड लिखने में बिताया - जो इस बात का प्रमाण है कि आप पॉज़िट सर्टिफिकेट की तुलना में यदि आप कोड लिखते हैं तो वर्किंग सॉफ़्टवेयर बनाने की संभावना अधिक है। :-)
बॉब जार्विस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.