2010-11-11 12 views
5

एफ # में पार्सिंग तिथि के संबंध में बहुत ही बुनियादी सवाल। मैं एफ # और .NET के लिए बहुत नया हूं, इसलिए कृपया मेरे साथ भालू।एफ # - पार्स दिनांक

मेरी तिथि प्रारूप yyyyMMDD20100503 जैसा प्रारूप है।

मैं इसे DateTime में टाइप कैसे कर सकता हूं F # में टाइप करें।

मैंने System.DateTime.Parse("20100503"); को आजमाया लेकिन एक त्रुटि प्राप्त हुई।

मैं पैरासे विधि में प्रारूप स्ट्रिंग कैसे पास करूं ??

उत्तर है - प्रतिक्रियाओं के लिए सभी को धन्यवाद।

let d = System.DateTime.ParseExact("20100503", "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture); 

उत्तर

0

प्रारूप स्वीकार नहीं किया गया है।

http://msdn.microsoft.com/en-us/library/1k1skd40.aspx

आप पार्स करने से पहले स्ट्रिंग हेरफेर करने के लिए आवश्यकता हो सकती है।

हालांकि आप सही रास्ते पर हैं।

+0

मैं yyyyMMDD प्रारूप – Raghs

+0

का उपयोग कर डेटटाइमफॉर्मैटइन्फो कैसे बना सकता हूं, मुझे लगता है कि आप मेरे उत्तर पर टिप्पणी करना चाहते हैं। आपके द्वारा बनाई गई डेटटाइमफॉर्मैटइन्फो ऑब्जेक्ट पर कई प्रकार की संपत्तियां सेट की जा सकती हैं, मुझे विश्वास है कि आप जिस सेट को सेट करना चाहते हैं वह शॉर्टडेट है, मुझे आपको चेतावनी देना है, मुझे नहीं पता कि यह कोई विभाजक नहीं होगा या नहीं। यही कारण है कि मैं स्ट्रिंग में हेरफेर करूँगा क्योंकि दोनों उत्तरों ने सुझाव दिया है। – marr75

+0

आपको स्ट्रिंग को प्रारूप में डालने की आवश्यकता होगी जो डेटटाइम। पर्स का उपयोग कर सकते हैं। इसे YYYY-MM-DD में बदलने का प्रयास करें। आप दूसरों ने डेटटाइम का इस्तेमाल किया है। पर्सएक्सएक्ट भी आपको प्रारूप पर नियंत्रण देगा। –

0

आपको डेटटाइम के अधिभार का उपयोग करने की आवश्यकता होगी। पर्स जो IFormatProvider लेता है। आपके द्वारा आपूर्ति की जाने वाली IFormatProvider को उस प्रारूप को समझना चाहिए।

आप डेटटाइमफॉर्मैट इंफो ऑब्जेक्ट बनाकर डेट स्ट्रिंग के लिए सही प्रारूप के साथ ऐसा कर सकते हैं जिसे आप पार्स करने के लिए खिला रहे हैं।

यह संभवतः आप जो कर रहे हैं उसके लिए बहुत काम है। यदि आप स्ट्रिंग को थोड़ा पहले पुनर्गठित कर सकते हैं (सबसे अधिक सेपरेटर्स के साथ डेट स्ट्रिंग की संभावना है), तो आप शायद बेहतर हो जाएंगे।

2

मैंने आज सुबह similar question का उत्तर दिया। मैंने एफ # का उपयोग नहीं किया है, लेकिन अगर आपके पास डेटटाइम तक पहुंच है। पैरासेक्स, मेरा जवाब आपकी मदद कर सकता है।

//Using code example from my previous answer... 
string s = "100714 0700"; 
DateTime d; 
if (!DateTime.TryParseExact(s, "yyMMdd hhmm", CultureInfo.InvariantCulture, out d)) 
{ 
    // Whoops! Something is wrong with the date. 
} 


//In your case 
string s = "20100503"; 
DateTime d; 
if (!DateTime.TryParseExact(s, "yyyyMMdd", CultureInfo.InvariantCulture, out d)) 
{ 
    // Whoops! Something is wrong with the date. 
} 
+0

मुझे TryParseExact का उपयोग करने के लिए आपके सुझाव पसंद हैं। एफ # उपयोग हालांकि सी # से अलग है।यह दोनों सफलता और नतीजे एक बार में लौटाता है: 'मैच डेटटाइम। ट्राईपर्सएक्सएक्ट (एस, "yyyyMMdd", CultureInfo.InvariantCulture, DateTimeStyles.None) के साथ | सच, डी -> डी | झूठा, _ -> डेटटाइम.अब'। यदि आपको कोई फर्क नहीं पड़ता है तो मैं इसे आपके सी # संस्करणों के नीचे जोड़ दूंगा। –

8

आप एक कस्टम स्वरूप का उपयोग करने में सक्षम होना चाहिए:

तुम भी TryParseExact ताकि आप जाल बल्कि एक कोशिश पकड़ के अंदर डाल करने के लिए की तुलना में झूठी लौटने कार्य के आधार पर एक विफलता कर सकते हैं पर विचार हो सकता स्ट्रिंग। इसे आजमाएं:

System.DateTime.ParseExact("20100503", "yyyymmdd", null);; 

अधिक जानकारी के लिए http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx देखें।

3

DateTime.ParseExact("20100503", "yyyyMMdd", CultureInfo.CurrentCulture)

उपयोग ParseExact विधि और छोटे ऊपरी के बजाय d का उपयोग करें।

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