2011-08-12 17 views
5

कनवर्ट करने की कोशिश कर रहा हूं, मैं 'अगस्त 12/11' जैसे 'वाईवायवाई-एमएम-डीडी' में दिनांक स्ट्रिंग को बदलने की कोशिश कर रहा हूं, जो इस उदाहरण में '2011-08-12' होगा ।पर्ल/रेगेक्स तिथि प्रारूप

इस रूपांतरण के लिए उपयोग करने के लिए सबसे अच्छा perl/regex क्या होगा? मैं इसे प्रत्येक पार्स करके मैन्युअल रूप से परिवर्तित करके इसे करने में सक्षम था .. लेकिन मुझे लगता है कि यह perl/regex के साथ करने का एक तेज तरीका है। धन्यवाद।

उत्तर

4

मैं इस तरह की तारीखों की किसी भी पार्सिंग के खिलाफ विशेष रूप से एक या दो रेगेक्स के साथ आने की कोशिश करके सिफारिश करता हूं। ऐसा करने के लिए बहुत से मौजूदा पर्ल मॉड्यूल हैं, जैसे कि Date::Manip। आपके कई विकल्प उचित रूप से in this article शामिल हैं।

+2

+1 दिनांक :: मणिप 'के लिए +1। उद्देश्य के लिए डिज़ाइन की गई लाइब्रेरी का उपयोग करने के लिए सबसे अच्छा है, क्योंकि हर किनारे के मामले को स्वयं कवर करने का प्रयास करने के विरोध में। –

+0

मेरे वेबहोस्ट में दिनांक :: मैनिप नहीं है और मुझे इस मॉड्यूल को स्थापित करने की अनुमति नहीं है :(.. यही कारण है कि मैं एक रेगेक्स समाधान की तलाश में हूं। – simbatish

+0

@sim क्या आपके पास डेटटाइम स्थापित है? – TLP

2

समय :: टुकड़ा लंबे समय तक कोर मॉड्यूल रहा है, इसमें एक स्ट्रिंग को टाइम :: टुकड़ा ऑब्जेक्ट में पार्स करने की क्षमता है, जो उसके बाद 10 गैजियन विभिन्न प्रारूपों में आपके लिए प्रारूपित कर सकता है। यदि समय :: टुकड़ा स्थापित नहीं है तो आप कुछ अन्य सैकड़ों दिनांक मॉड्यूल की तलाश कर सकते हैं जिन्हें आप सीपीएन पर सूचीबद्ध देख सकते हैं। (एक लाइनर का उपयोग करें: perl -e "मॉड्यूल का उपयोग करें :: IHope :: IsHere || die \ 'नहीं मिला \" ")।

`Time::Piece->strptime(STRING, FORMAT) 
         # see strptime man page. Creates a new 
         # Time::Piece object` 

विफल रहा कि मैं अपनी होम निर्देशिका में मॉड्यूल स्थापित करना शुरू कर दूंगा।

संबंधित मुद्दे