आप तिथि के इनपुट के लिए एक प्रारूप कैसे निर्दिष्ट करते हैं?


19

किसी प्रारूप में दिनांक और समय को देखते हुए date, जिसे मान्यता प्राप्त नहीं है , मैं dateतिथि और समय को कैसे पहचान सकता हूं ?

उदाहरण के लिए:

$ date -d "09SEP2012:23:58:46"
date: invalid date `09SEP2012:23:58:46'
$ date -d "09SEP2012:23:58:46" --magic-option "ddMMMYYY:hh:mm:ss"
Sun Sep  9 23:58:46 MDT 2012

है --magic-optionमौजूद हैं? यदि नहीं, sedतो इनपुट को एक सुव्यवस्थित तारीख स्ट्रिंग में बदलने के बजाय इसका समाधान करने का एक और अधिक सुरुचिपूर्ण तरीका है ?


जवाबों:


10

न तो POSIX और न ही GNU तारीख --magic-option। FreeBSD इसे कहता है -f(एक वाक्यविन्यास के रूप में dateआउटपुट स्वरूप विनिर्देशक, जो आप प्रस्तावित नहीं करते हैं)।

आपकी तिथि GNU तिथि द्वारा मान्यता प्राप्त होने के बहुत करीब है: यह सब लगता है कि बृहदान्त्र की जगह ले रहा है जो एक स्थान से समय को अलग करता है।

date -d "$(echo "09SEP2012:23:58:46" | sed 's/:/ /')"

1
और कस्टम प्रारूपों के साथ? केवल जाने का तरीका नियमित अभिव्यक्ति हैं? यह भयानक है :-(
phil294

1
आप उस प्रारूप के बारे में कुछ जाने बिना तारीखों को पार्स नहीं कर सकते, जैसे वे शास्त्रीय उदाहरण हैं 01/02/03
गिल्स एसओ- बुराई को रोकना '

5

मैंने औजारों ( तारीखों ) का एक गुच्छा लिखा है जो तारीखों और समय के साथ अधिक स्क्रिप्ट-अनुकूल तरीके से व्यवहार करता है। आपका जादू विकल्प है --input-format|-i, जैसे:

dconv -i '%d%b%Y:%H:%M:%S' "09SEP2012:23:58:46"
=>
  2012-09-09T23:58:46

हालांकि dconvयह सीधे dateआउटपुट प्रारूप का समर्थन नहीं करता है (यह TZपर्यावरण में किसी भी चीज को प्रदान या प्रदान नहीं करता है), डेटटाइलstrptime में एक उपकरण है जो प्रारूप निर्दिष्ट करने वाले का समर्थन करता है ।%Z

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.