2010-10-05 10 views
7

बदलते मैं एक स्ट्रिंग यह दिनांक समय में परिवर्तित करने को पार्स कर रहा हूँ।DateTime.Parse: अपवाद है जब संस्कृति

String was not recognized as a valid DateTime. 

मैं यह त्रुटि केवल अगर मैं अमेरिका से एक अलग देश में स्थित एक कंप्यूटर से एप्लिकेशन को चलाने के हो रही है: मैं कुछ मामलों में एक त्रुटि हो रही है। क्या मैं स्ट्रिंग में देखते हैं 09/20/2010 14:11 है और इस मामले में मैं एक अपवाद मिलता है। अगर मेरे पास कोई मान है: 10/05/2010 12:54 मुझे अपवाद नहीं मिला है। मुझे लगता है कि यह तथ्य है कि दिन 20 है और यह कंप्यूटर यूरोप में है, इसलिए ऐसा लगता है कि 20 महीने है। समस्या मैं इसे en-US होना करने के लिए मजबूर है:

CompletedDttm = DateTime.ParseExact(value, "MM/dd/yyyy hh:mm", new CultureInfo("en-US")); 

क्योंकि मैं अपवाद हो रही है मुझे यकीन है कि यह सही दृष्टिकोण है लगता है।

किसी भी विचार कैसे एक तरीका है कि कोई बात नहीं काम करता है क्या संस्कृति मैं मशीन पर चल रहा हूँ में एक स्ट्रिंग पार्स करने में? के बजाय:

+0

आप जानते हैं कि प्रारूप हमेशा की तरह हो जाएगा, तो आप DateTime.Parse (मूल्य, CultureInfo.InvariantCulture) इस्तेमाल कर सकते हैं; दिनांक और समय प्रारूप के संदर्भ में, InvariantCulture लगभग एन-यूएस के बराबर है। बीटीडब्लू, अगर आप इसे इस तरह से पार्स करते हैं, तो नेट समय क्षेत्र निर्धारित करने में सक्षम नहीं होगा और यह वास्तव में आपके डेटटाइम को "अनिर्दिष्ट स्थानीय" के रूप में पेश करेगा जो त्रुटियों का कारण बन सकता है। यदि आप जानते हैं कि स्रोत यूटीसी में है, तो इसका उपयोग करें: डेटटाइम। पर्स (वैल्यू, कल्चरइन्फो। इन्विरिएंट कल्चर, डेटटाइम स्टाइल। एसम्यू यूनिवर्सल); –

उत्तर

10

आप का उपयोग करना चाहिए "मिमी एचएच" "hh: mm" - "HH" 24-घंटे घड़ी के लिए है; "एचएच" 12 घंटे की घड़ी के लिए है। तो 14 "एचएच" के लिए मान्य मान नहीं है।

मैं यूएस मशीन पर भी एक ही समस्या को देखने की उम्मीद करता हूं ... हो सकता है कि आप समय क्षेत्र अंतर के कारण केवल यूएस मशीनों पर प्री-1 बजे बार प्राप्त करें?

+0

मुझे लगता है, वह समस्या थी। यह अब काम करता है। – tony

+0

शीघ्र मदद के लिए बहुत धन्यवाद टोनी – tony

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