प्रोसेसिंग दिनांक के आधार पर मुझे पिछले महीने की अंतिम तिथि कैसे मिलेगी?
उदाहरण:
- प्रसंस्करण दिनांक = 15jan2015
- अपेक्षित तिथि = 31d2012014,
- प्रसंस्करण दिनांक = 10feb2015
- अपेक्षित तिथि = 31jan2015
प्रोसेसिंग दिनांक के आधार पर मुझे पिछले महीने की अंतिम तिथि कैसे मिलेगी?
उदाहरण:
जवाबों:
GNU के साथ date
:
$ date +%d%b%Y
16Aug2015
$ date -d "$(date +%Y-%m-01) -1 day" +%d%b%Y
31Jul2015
कुछ खोलों में तारीख में हेरफेर के लिए अंतर्निहित समर्थन है:
के साथ ksh93
:
$ printf "%(%d%b%Y)T\n" "1st day, yesterday"
31Jul2015
के साथ zsh
:
$ zmodload zsh/datetime
$ strftime -s d %Y-%m-01-12 $EPOCHSECONDS
$ strftime -rs d %Y-%m-%d-%H $d
$ strftime %d%b%Y $((d-86400))
31Jul2015
ऐसा करने के कई तरीके हैं; यहाँ मैं पाया गया सबसे सरल है (यहाँ GNU मानकर date
):
$ date -d "-$(date +%d) days"
Fri Jul 31 16:07:23 EDT 2015
TZ=Pacific/Apia faketime '2011-12-31 12:00' date -d '1 day ago'
। आपको एक त्रुटि मिलती है क्योंकि 2011-12-30 वहाँ नहीं था। यही है, दिन ऑफसेट कैलेंडर समय पर किया गया था। 2011-12-31 शून्य से 31 दिन आपको 2011-11-30 देता है क्योंकि यह 31 से 31 लेता है। वर्तमान समय में यह 31 * 24 * 60 * 60 * 60 सेकंड नहीं लेता है। इसकी तुलना करें TZ=Pacific/Apia faketime '2011-12-31 12:00' date -d '24 hour ago'
जो आपको २ ९वाँ देता है, यानी इस बार, यह तारीख २४ * ६० * ६० * ६० सेकंड पहले थी।
यहाँ एक संस्करण है जो मैक ओएस पर काम करता है, जो बीएसडी date
उपयोगिता का उपयोग करता है :
date -v1d -v-1d +%d%b%Y
तर्क क्रम में लगाए जाते हैं। आप एक तरह की कल्पना कर सकते हैं कि एक तारीख को एक तर्क से दूसरे तक पहुंचाया जाता है। उदाहरण के लिए:
date
) -> 2017-03-06 से प्रारंभ करें-v1d
) -> 2017-03-01 पर सेट करें-v-1d)
-> 2017-02-28)+%d%b%Y
) -> २eb एफ २०१ - को प्रारूपित करेंआप महीने आगे या पीछे का उपयोग कर के किसी भी संख्या तक पहुँच सकते हैं date -v-1m -v1d -v-1d
, की जगह -1m
महीने पीछे या आगे की संख्या (साथ +1m
) आप चाहते हैं।
यही जेनेरिक जवाब है। यह प्रश्न विशेष रूप से प्रारंभिक तिथि के सापेक्ष तिथियों के बारे में पूछता है। मैक ओएस / बीएसडी तिथि उपयोगिता आपको शुरुआत से डेटस्टैम्प की आपूर्ति नहीं करने देती है, लेकिन आप प्रत्येक तिथि तत्व को व्यक्तिगत रूप से सेट कर सकते हैं:
date -v2015y -v1m -v15d -v1d -v-1d +%d%b%Y
-> 31Dec2014