[चूंकि यह अच्छा नहीं है अगर हम टिप्पणियों में जारी रखते हैं (टिप्पणियां लंबी होंगी), मैं यहां समाधान के रूप में जो सोचता हूं उसे यहां रखूंगा]
dateBuy
को प्रारूपित करने के लिए आप जो प्रारूप चाहते हैं, उसके लिए आपको स्ट्रिंग प्रारूप को ToString()
. में भी रखना चाहिए
यानी
. के बजायdateBuy = (DateTime.ParseExact(dateBuy2, "yyyy-MM-dd", null)).ToString();
डाल
dateBuy = (DateTime.ParseExact(dateBuy2, "yyyy-MM-dd", null)).ToString("yyyy-MM-dd");
अन्यथा, ToString()
. के लिए यह संभव है "2015-10-16" के बजाय "2015-10-16 12:00:00 AM" जैसा कुछ बनाने के लिए
हालांकि, चूंकि आप ParseExact
. का उपयोग करते हैं , dateBuy2
. के लिए इनपुट "yyyy-MM-dd" के प्रारूप में भी होना चाहिए जो उद्देश्य को विफल करता है। आप DateTimePicker
. का उपयोग करने पर विचार कर सकते हैं ताकि आप इनपुट प्रारूप को नियंत्रित कर सकें।
वैकल्पिक रूप से, आप DateTime.Parse
. का उपयोग कर सकते हैं या TryParse
(जैसा कि मार्थीन ने सुझाया है) इसके बजाय, कुछ इस तरह
try {
DateTime dt = DateTime.Parse(txtDateBuy.Text);
dateBuy = dt.ToString("yyyy-MM-dd");
} catch (Exception exc) {
//wrong format, do something to tell the user
}
अगर इनपुट TextBox
में होना है बेहतर होगा कि आप try-catch
यदि आप Parse
. का उपयोग करते हैं, तो गलत-स्वरूपित इनपुट लेने के लिए अपने प्रोग्राम को क्रैश होने से बचाने के लिए .
जैसे कि आप TryParse
. का उपयोग करते हैं आप इसे if-else
. में डाल सकते हैं इसके बजाय ब्लॉक स्टेटमेंट
DateTime dt;
if (DateTime.TryParse(txtDateBuy.Text, CultureInfo.InvariantCulture, DateTimeStyles.AssumeLocal, out dt)) {
//correct format, do something using dt
} else {
//incorrect format, warns the user
}
CultureInfo
प्राप्त करने के लिए enum
आपको System.Globalization
. का संदर्भ जोड़ना होगा
[श्री सोनर गोनुल द्वारा दिए गए सुझाव के बाद संपादित]