2011-06-15 10 views
19

मैं सी # में ऐसा करते हैं तो:सी # तिथि स्वरूपण स्लेश विभाजक खो रहा है

Console.WriteLine(DateTime.Now.ToString("ddd M/dd/yy")); 

मैं इस तरह उत्पादन उम्मीद करेंगे:

Wed 6/15/11 

लेकिन यह वास्तव में इस आउटपुट:

Wed 6 15 11 

स्लेश गायब क्यों हो रहे हैं? क्या इसे रोकने के लिए कोई तरीका है और अपेक्षित प्रारूप में तारीख को आउटपुट किया गया है?

+1

मुझे आपकी प्रारूप स्ट्रिंग के साथ स्लेश मिलते हैं। आप किस संस्कृति के तहत चल रहे हैं? – Oded

+0

मैंने आपके कोड की प्रतिलिपि बनाई और इसे स्निपेट कंपाइलर के साथ चलाया। यह 'बुध 6/15/11' आउटपुट। –

+0

यह समस्या केवल Windows 7 में होती है जब आप अपना संक्षिप्त दिनांक प्रारूप "ddd m/dd/yy" में बदलते हैं। –

उत्तर

42
Console.WriteLine(DateTime.Now.ToString("ddd M/dd/yy", CultureInfo.InvariantCulture)); 
      Console.ReadLine(); 

ऊपर

कोशिश
+3

यह काम पर प्रतीत होता है, संस्कृतिइंफो.इवरिएरटिकल्चर क्यों यहां आवश्यक है? –

+8

@ जोन - क्योंकि यदि 'संस्कृतिइन्फो' निर्दिष्ट नहीं है, तो वर्तमान संस्कृति का उपयोग किया जाएगा। यदि यह ऐसी संस्कृति है जो अलग-अलग तारीखों में विभाजक के रूप में स्लेश का उपयोग नहीं करती है (और प्रारूप स्ट्रिंग दिनांक विभाजक को '/' होने के लिए निर्दिष्ट करती है, जिसे वास्तविक संस्कृति दिनांक विभाजक द्वारा बदला जाता है)। Http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.invariantculture.aspx पर आधारित – Oded

+1

मुझे लगता है कि ऐसा लगता है कि ऐसा लगता है कि आपकी संस्कृतिइन्फो "0" को – David

-3

मेरा मानना ​​है कि यह इस तरह होना चाहिए:

string.format("{0:ddd M/dd/yy}", DateTime.Now); 
+1

इस और मेरे कोड के बीच क्या अंतर है? दोनों वर्तमान दिनांक लेते हैं और प्रदान की गई स्ट्रिंग का उपयोग करके इसे प्रारूपित करते हैं, है ना? –

+0

@ जोन, ऐसा प्रतीत होता है कि आप इसे सही तरीके से कर रहे हैं, मैं डीवीडी प्रॉड के उत्तर की कोशिश करने का सुझाव देता हूं। –

18

तुम भी

Console.WriteLine(dateTime.ToString("ddd M'/'dd'/'yy")); 

एक संभव समाधान है कि इस्तेमाल कर सकते हैं यदि आप उपयोग नहीं कर रहे जैसा कि अन्य उत्तरों में उल्लिखित आविष्कार संस्कृति है।

2

प्रारूप तर्क में "/" (स्लैश) का डिफ़ॉल्ट व्यवहार वर्तमान की संस्कृति दिनांक सेपरेटर का उपयोग करना है।

"/" (स्लैश) को मजबूर करने के लिए, आपको इसे "\" (बैकस्लैश) से पहले करना होगा।

पूर्व .: "yyyy/MM/dd" हमेशा उपयोग की जाने वाली वर्तमान संस्कृति के स्वतंत्र "2015/07/02" की तारीख प्रदर्शित करेगा।

सम्मान

+0

में बदल रही है बहुत अच्छी जानकारी :) "Culture.Invariant" के संयोजन के साथ आपके समाधान का उपयोग करके 100% की गारंटी होगी कि आपकी तिथि में आपके द्वारा निर्दिष्ट सटीक प्रारूप है :) –

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