2008-09-15 16 views
5

बनाने के लिए मजबूर नहीं करना चाहिए यदि कोई गलत है, तो कृपया मुझे सही करें, लेकिन सी # में एक yyyy/MM/dd (या अन्य विशिष्ट प्रारूप) दिनांकों को पार्स करना जितना आसान होसी # में सटीक तिथियों को पार्स करने से आपको IFormatProvider

DateTime.ParseExact(theDate, "yyyy/MM/dd"); 

लेकिन नहीं, सी # आपको IFormatProvider बनाने के लिए मजबूर करता है।

क्या यह सेट करने का एक app.config दोस्ताना तरीका है इसलिए मुझे हर बार ऐसा करने की आवश्यकता नहीं है?

DateTime.ParseExact(theDate, "yyyy/MM/dd", new CultureInfo("en-CA", true)); 

उत्तर

14

IFormatProvider तर्क शून्य हो सकता है।

+0

एमएसडीएन दस्तावेज़ों से: "यदि प्रदाता एक शून्य संदर्भ (विजुअल बेसिक में कुछ भी नहीं है), संस्कृति संस्कृति जो वर्तमान संस्कृति से मेल खाता है, का उपयोग किया जाता है।" –

+0

मुझे एहसास है कि मुझे यह नहीं बताया जाना चाहिए कि app.config का उपयोग करने की आवश्यकता है। आप जो चाहते थे उसे मिला - 'बस तारीख को पार्स करें और मुझे उन चीज़ों से परेशान न करें जिनकी मुझे परवाह नहीं है'। धन्यवाद। – AlanR

3

एक विस्तार विधि बनाएं:

public static DateTime ParseExactDateTime(this string dateString, string formatString) { 
    return DateTime.ParseExact(dateString, formatString, new CultureInfo("en-CA", true)); 
} 
+0

धन्यवाद विल। मैंने वास्तव में बहुत अच्छी तरह से नहीं सोचा था। –

5

वर्तमान आवेदन संस्कृति का उपयोग करें:

DateTime.ParseExact("2008/12/05", "yyyy/MM/dd", System.Globalization.CultureInfo.CurrentCulture); 

आप वैश्वीकरण टैग का उपयोग कर app.config में आवेदन संस्कृति सेट कर सकते हैं। मुझे लगता है।

1

आप एक बार IFormatProvider भी बना सकते हैं और बाद में उपयोग के लिए इसे स्टोर कर सकते हैं।

1

तुम भी Convert वर्ग

Convert.ToDateTime("2008/11/25"); 
6

ParseExact एक संस्कृति की जरूरत है इस्तेमाल कर सकते हैं: "yyyy MMM DD" पर विचार करें। एमएमएम एक स्थानीयकृत महीना नाम होगा जो वर्तमान संस्कृति का उपयोग करता है।

3

यह विशेष दिनांक और समय प्रतीकों और तारों (जैसे किसी विशेष भाषा में सप्ताह के दिनों के नाम) निर्धारित करने के लिए प्रारूप प्रदाता की आवश्यकता होती है। आप एक शून्य का उपयोग कर सकते हैं, इस मामले में संस्कृतिइन्फो ऑब्जेक्ट जो वर्तमान संस्कृति से मेल खाती है, का उपयोग किया जाता है।

यदि आप इसे हर बार निर्दिष्ट नहीं करना चाहते हैं, तो एक प्रारूप विधि बनाएं जो प्रारूप प्रदाता के रूप में या तो शून्य या CultureInfo ("en-CA", true) पास करे।

0

// MySql संगत प्रारूप करने के लिए तिथि कन्वर्ट

दिनांक समय DATEVALUE = Convert.ToDateTime (datetimepicker.text);

स्ट्रिंग डेटवल्यू = DateValue.ToString ("yyyy-MM-dd");

0

वैश्वीकरण का उपयोग करने में क्या गड़बड़ है। CultureInfo.InvariantCulture?

+0

कुछ भी नहीं, सिर्फ 'मेरे कोड को कूड़े नहीं करना चाहते हैं क्योंकि यह वैश्वीकरण हमारी दुकान में चिंता नहीं है। – AlanR

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