2012-07-03 8 views
8

मैं वैध डेटाटाइम की जांच करने के लिए Datetime.TryParse विधि का उपयोग कर रहा हूं। इनपुट दिनांक स्ट्रिंग कोई स्ट्रिंग डेटा होगा। लेकिन अमान्य में निर्दिष्ट दिनांक के रूप में झूठी वापसी कर रहा है।डेटटाइम के साथ वैध दिनांक जांच। ट्राईपर्स विधि

DateTime fromDateValue; 
if (DateTime.TryParse("15/07/2012", out fromDateValue)) 
{ 
    //do for valid date 
} 
else 
{ 
    //do for in-valid date 
} 

संपादित करें: मैं याद किया। मुझे "15/07/2012 12:00:00" के रूप में समय के साथ वैध तिथि की जांच करनी होगी।

कोई सुझाव का स्वागत है ....

+4

यह हमेशा एक खतरनाक बात है ... पार्स उपयोगकर्ता की संस्कृति पर निर्भर करता है। हमेशा इसे ध्यान में रखने की कोशिश करें? "15/07/2012" फ्रांस में मान्य है, जबकि यह संयुक्त राज्य अमेरिका में नहीं है ... – Kek

+1

यदि आप एक लोकेल का उपयोग कर रहे हैं जो एमएम/डीडी/वाई वाई वाई वाई प्रारूप की अपेक्षा करता है, तो 15/07/2012 एक अमान्य तिथि है। – Jason

+1

@ जेसन आप सही हैं, मेरा लोकेल एमएम/डीडी/yyyy formate है। और इसलिए, यह अमान्य है। – Sujit

उत्तर

21

आप TryParseExact विधि है जो आप संभव प्रारूप है कि आप का समर्थन करना चाहते का एक संग्रह पारित करने के लिए अनुमति देता है इस्तेमाल कर सकते हैं। TryParse विधि संस्कृति निर्भर है इसलिए यदि आप इसका उपयोग करने का निर्णय लेते हैं तो बहुत सावधान रहें।

उदाहरण के लिए

तो:

DateTime fromDateValue; 
string s = "15/07/2012"; 
var formats = new[] { "dd/MM/yyyy", "yyyy-MM-dd" }; 
if (DateTime.TryParseExact(s, formats, CultureInfo.InvariantCulture, DateTimeStyles.None, out fromDateValue)) 
{ 
    // do for valid date 
} 
else 
{ 
    // do for invalid date 
} 
0

आप TryParseExact का उपयोग करना चाहिए के रूप में आप प्रारूप अपने मामले में ठीक किया गया है लगता है। आप

DateTime.ParseExact([yourdatehere], 
        new[] { "dd/MM/yyyy", "dd/M/yyyy" }, 
        CultureInfo.InvariantCulture, 
        DateTimeStyles.None); 
0

के रूप में अन्य लोगों ने कहा, आप TryParseExact उपयोग कर सकते हैं के लिए

कुछ की तरह भी काम कर सकते हैं।

अधिक जानकारियां और समय के साथ प्रयोग के लिए, आप जाँच कर सकते हैं MSDN Documentation

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