2012-05-17 24 views
6

मैंने एक सी # WinForms एप्लिकेशन बनाया है।डेटटाइम अजीब व्यवहार

अपने कंप्यूटर पर निम्न काम करता है:

DateTime.ParseExact("13/05/2012", "dd/mm/yyyy", null) 

लेकिन यह नहीं करता है:

DateTime.Parse("13/05/2012") 

अपने ग्राहक के कंप्यूटरों पर यह उलट है। यह काम करता है:

DateTime.Parse("13/05/2012") 

लेकिन यह नहीं करता है:

DateTime.ParseExact("13/05/2012", "dd/mm/yyyy", null) 

त्रुटि कहता है:

String was not recognized as a valid DateTime. 

इस समस्या के बारे इंटरनेट पर किसी भी जानकारी प्राप्त करने के प्रबंधन नहीं किया। कार्यक्रम .Net Framework 4 का उपयोग करता है और एक x86 अनुप्रयोग है। मैं विंडोज 8 एक्स 64 चलाता हूं, क्लाइंट विंडोज 7 एक्स 64 चलाता है।

क्या किसी के पास यह संकेत है कि ऐसा क्यों होता है?

धन्यवाद।

+2

मुझे सिस्टम 'संस्कृतिइन्फो दिनांक-समय स्वरूपण से संबंधित एक विसंगति पर संदेह होगा, लेकिन कृपया "काम नहीं करता" का अर्थ है। क्या यह एक त्रुटि उत्पन्न करता है? त्रुटि संदेश क्या है? –

+1

@DanJ यह उसके लिए काम करता है, लेकिन यह 'ParseExact' विधि का उपयोग करते समय क्लाइंट के कंप्यूटर पर "05/13/2012" के रूप में इसे पार करता है। मैं CultureInfo पर जांच करने से सहमत हूं। – SimpleVar

+4

आईएसओ 'yyyy-MM-dd' प्रारूप पर मानकीकृत करने का एक अन्य कारण। =) – MCattle

उत्तर

12

विभिन्न कंप्यूटरों पर आप अलग-अलग व्यवहार कर रहे हैं क्योंकि वे विभिन्न संस्कृतियों के साथ चल रहे हैं। (ideone)

System.Console.WriteLine(CultureInfo.CurrentCulture); 

आउटपुट (उदाहरण):

 
en-US 

संस्कृति बहुत सी बातें निर्दिष्ट करता है, जिनमें से एक की तारीख विभाजक है अगर यह कुछ अलग आउटपुट को देखने के लिए दोनों कंप्यूटर पर कोड की इस पंक्ति चलाने की कोशिश करें । (ideone)

CultureInfo cultureInfo = CultureInfo.InvariantCulture; // or whatever you prefer 
DateTime dateTime = DateTime.ParseExact("13/05/2012", "dd/MM/yyyy", cultureInfo); 

ऊपर कोड मान लिया गया है कि आप इन का उपयोग कर बयान है: आप सभी उपयोगकर्ताओं के लिए संगत व्यवहार चाहते हैं, एक संस्कृति निर्दिष्ट करने का प्रयास

using System; 
using System.Globalization; 
+4

'मिमी' में बदला जाना चाहिए, महीनों में नहीं, आप 'एमएम' की तलाश में हैं। जैसा कि आपका उदाहरण दिखाता है। – Guvante

+0

@ गुवाँटे: धन्यवाद, मैंने इसे ठीक किया। –

+0

एक आकर्षण की तरह काम किया! आपका बहुत बहुत धन्यवाद! –

11

सावधान रहें, custom date and time format strings में, mm विनिर्देशक "मिनट" का प्रतिनिधित्व करता है, न कि "महीने"। आपको महीनों के लिए MM का उपयोग करने की आवश्यकता है।

DateTime.ParseExact("13/05/2012", "dd/MM/yyyy", CultureInfo.InvariantCulture) 
+0

मुझे इसके बारे में पता नहीं था, धन्यवाद! –

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