2014-10-09 6 views
5

से अलग सांस्कृतिक प्रारूप लौटने के लिए यहां आपके लिए एक अजीब है।.oShortDateString अपेक्षित

हमारे पास एक सी # इंटरफ़ेस है जो विंडोज XP (32 बिट) पीसी पर बिना किसी समस्या के वर्ष की शुरुआत के बाद से चल रहा है। हमने पीसी को विंडोज 7 (64 बिट) में एससीसीएम द्वारा स्थापित ऐप्स के साथ अपग्रेड किया है।

नवीनतम रन के साथ टेक्स्ट क्षेत्र में दिनांक यूके प्रारूप (02/05/2014) के बजाय यूएस प्रारूप (5/2/2014) में दिखना शुरू हो गया है।

कोड है कि इस्तेमाल किया जा रहा है:

string Lines = FromFormat.Text + " from " + FromFormat.Charge_From.ToShortDateString() + " to " + FromFormat.Charge_To.ToShortDateString() +"."; 

कहाँ FromFormat स्रोत डेटा के साथ एक वस्तु है, Charge_From & Charge_To datatime चर हैं।

हम पीसी के क्षेत्रीय सेटिंग्स की जाँच की और नेट से पीसी की सेटिंग इन दोनों को ब्रिटेन प्रारूपों परीक्षण अनुप्रयोग के लिए कोड के रूप में स्थापित कर रहे हैं प्रदर्शित करने के लिए एक छोटे से परीक्षण ऐप बना लिया है:

label1.Text = DateTime.Now.ToString(); 
label2.Text = DateTime.Now.ToString("dd MMM yyyy"); 
label3.Text = DateTime.Now.ToShortDateString(); 
label4.Text = Thread.CurrentThread.CurrentCulture.EnglishName; 

मैं जानता हूँ कि मैं सही प्रारूप को मजबूर करने के लिए ToShortDateString() को ToString("dd/MM/yyyy") के साथ प्रतिस्थापित कर सकता हूं लेकिन मेरा प्रश्न यह क्यों हो रहा है?

क्या यह विंडोज 7 अपग्रेड के साथ कुछ करना है? या एससीसीएम?

धन्यवाद अग्रिम में

+0

आपकी 'वर्तमान संस्कृति' क्या है? क्या यह 'एन-जीबी' या' एन-यूएस 'है? –

+0

_ "मुझे पता है कि मैं ToSortDateString() को ToString (" dd/MM/yyyy ") के साथ सही प्रारूप को मजबूर करने के लिए प्रतिस्थापित कर सकता हूं" _ यह सही नहीं है, "ToString (" dd/MM/yyyy ") भी होगा '/' के बजाय अपनी इलाज संस्कृति की तिथि-विभाजक का उपयोग करें। –

+0

जहां तक ​​मैं सभी पीसी बता सकता हूं एन-जीबी – Tony

उत्तर

0

ज्यादा परीक्षण के बाद और सिर के खरोंच हमें लगता है कि हम इस का जवाब मिल गया है।

परीक्षण के दौरान हमने देखा कि पीसी के पास एससीसीएम (केवल विंडोज़ 7) के माध्यम से इंटरफ़ेस स्थापित किया गया था, जो यूएस दिनांक स्वरूपित पाठ का उत्पादन कर रहे थे, लेकिन जो क्लिक के माध्यम से सीधे थे (मुख्य रूप से एक्सपी) यूके दिनांक स्वरूपित पाठ का उत्पादन कर रहे थे।

आगे परीक्षण ने पुष्टि की कि अगर हमने एक क्लिक के माध्यम से विंडोज 7 पीसी स्थापित किया है तो हमें यूके की तिथि स्वरूपित पाठ मिल गया है।

बहुत भ्रम के बाद, हमने देखा कि जब एससीसीएम ने इंटरफ़ेस स्थापित किया था तो यह रिपोर्ट व्यूअर का आरटीएम संस्करण स्थापित कर रहा था, लेकिन जब एक बार इंटरफ़ेस इंस्टॉल किया गया था तो रिपोर्ट व्यूअर का SP1 संस्करण स्थापित किया गया था।

हमने रिपोर्ट व्यूअर एसपी 1 स्थापित करने के लिए एससीसीएम को बदल दिया और इंटरफेस के एक नए एससीसीएम स्थापित संस्करण का परीक्षण किया और यूके की तारीखें प्राप्त कीं।

रिपोर्ट व्यूअर का संस्करण किसी पीसी की संस्कृति सेटिंग्स या ToShortDateString() कामों को प्रभावित करेगा, हमें कोई जानकारी नहीं है लेकिन यह समस्या क्या है।

8

ToShortDateString method का उपयोग करता ShortDatePattern property जो आपके CurrentCulture की "d" standard date and time format के समान है।

en-GB संस्कृति की ShortDatePattern संपत्ति dd/MM/yyyy है।

लेकिन en-US संस्कृति की ShortDatePattern संपत्ति M/d/yyyy है।

यही कारण है कि आप हमेशा ToShortDateString और ToString("dd/MM/yyyy") के साथ प्रतिस्थापित नहीं कर सकते हैं। वे हमेशा एक ही नहीं होते हैं। और "/" Custom Format Specifier का एक विशेष अर्थ है मुझे वर्तमान संस्कृति या निर्दिष्ट संस्कृति के दिनांक विभाजक के साथ प्रतिस्थापित करें।

मुझे संदेह है कि आपकी क्षेत्रीय सेटिंग्स आपकी अपग्रेड प्रक्रिया में बदल गई हैं और इसीीलिए ToShortDateString विधि अलग-अलग परिणाम उत्पन्न करती है।

लेकिन चूंकि आप हमें अपनी CurrentCulture नहीं बताया था, हम जानते हैं कि असली समस्या है कभी नहीं ..

+0

का उपयोग कर रहा हूं मेरा पहला विचार था कि क्षेत्रीय सेटिंग्स बदल गई हैं, लेकिन वे अंग्रेजी (यूनाइटेड किंगडम) पर सेट हैं जो कि XP ​​पीसी सेट के समान है। – Tony

+0

अजीब चीज यह है कि जब हम पीसी पर परीक्षण कार्यक्रम चलाते हैं तो यह रिपोर्ट करता है कि पीसी अंग्रेजी (यूनाइटेड किंगडम) है लेकिन जब आप इंटरफ़ेस चलाते हैं तो कुछ सेकंड बाद यह एन-यूएस प्रारूप में तारीख लिखता है। हमने पहले से ही पाया है कि विंडोज 7 में कई जगहें हैं जहां ओडीबीसी संग्रहीत/एक्सेस की गई है क्या क्षेत्रीय सेटिंग्स के लिए कुछ समान है? – Tony

+0

@ टोनी तो आपकी 'वर्तमान संस्कृति' संपत्ति 'एन-जीबी' है? अपने कार्यक्रम में भागो और देखें। –

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