2012-11-04 36 views
10

में डी/एमएम प्रारूप में दिनांक दर्ज करना मेरे पास एक टेक्स्टबॉक्स एक निरर्थक डेटटाइम संपत्ति से जुड़ा हुआ है।टेक्स्टबॉक्स

मैं ऑस्ट्रेलिया में हूं, इसलिए मुझे डी/एमएम/वाई प्रारूप में प्रस्तुत तिथियां चाहिए।

मेरी विंडोज 7 बॉक्स पर, मैं घ/मिमी प्रारूप में दिनांक दर्ज कर सकते हैं और इसे सही ढंग से बदला न गया हो

(जैसे। 1/11 1st नवंबर तक बदल देता है, 13/1 13 वीं जनवरी आदि में धर्मान्तरित) मेरे विंडोज 8 बॉक्स पर, उसी इनपुट का अर्थ यह है कि यह यूएस प्रारूप में था, इसलिए 1/11 11 जनवरी को बदल जाता है, और 13/1 विफल रहता है (क्योंकि कोई 13 वां महीना नहीं है)।

दोनों कंप्यूटर ऑस्ट्रेलियाई स्वरूपों का उपयोग करने के लिए सेट कर रहे हैं, और मैं Application.StartUp घटना में इस कोड है:

FrameworkElement.LanguageProperty.OverrideMetadata(GetType(FrameworkElement), New FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag))) 

बाइंडिंग के StringFormat घ के लिए सेट है/माह/वर्ष, और मैं देख लिया है कि यह एक ही संपत्ति में टेक्स्टब्लॉक को बाध्यकारी करके सही है जिसमें स्ट्रिंगफॉर्मैट डी पर सेट है (लंबी तिथि प्रारूप, जो 'बुधवार, 11 जनवरी, 2012' जैसे मान देता है)।

क्या किसी के पास कोई विचार है?

अद्यतन: आगे की जांच (नीचे टिप्पणियां देखें) पता चलता है कि यह विंडोज 7 की तुलना में विंडोज 8 पर एन-एयू संस्कृति अलग होने के साथ एक मुद्दा प्रतीत होता है, जिसका अर्थ है कि यह '1/11' जैसी तिथियों को समझता है। विंडोज 8 पर एमएम/डीडी प्रारूप में, जबकि विंडोज 7 पर, यह उन्हें डीडी/एमएम प्रारूप में व्याख्या करता है, जो एन-एयू संस्कृति का उपयोग करते समय मैं अपेक्षा करता हूं।

+0

अन्य चीजें मैंने कोशिश की है: बाध्यकारी पर 'कनवर्टर कल्चर = एन-एयू' सेटिंग, पैरेंट विंडो पर 'xml: lang = "en-AU"' सेट करना। न तो काम किया ... (बाध्यकारी पर एक कनवर्टर नहीं है, लेकिन मुझे लगा कि मैं इसे वैसे भी कोशिश करूंगा) – Charles

+2

'डेटटाइम। पर्स ("1/11", CultureInfo.GetCultureInfo ("en-AU"))। महीना 'विंडोज 7 पर 11 देता है, लेकिन विंडोज 8 पर 1 - यह अब एक डब्ल्यूपीएफ बग नहीं है ... – Charles

+0

यदि आप उपयोगकर्ता हैं तो क्या होगा? – Paparazzi

उत्तर

1

चूंकि IetfLanguageTag को बहिष्कृत किया गया है, क्या आपने इसके बजाय नाम संपत्ति का उपयोग करने पर विचार किया है?

http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.ietflanguagetag.aspx:

एक IETF भाषा टैग का प्रारूप संस्कृति नाम नाम संपत्ति द्वारा वापस करने के लिए समान है, लेकिन विशिष्ट संस्कृति पहचान नहीं करती। यही है, विभिन्न संस्कृतियां एक ही आईईटीएफ भाषा टैग साझा करती हैं यदि उन संस्कृतियों में समान भाषाई विशेषताएं हैं।

+0

'IetfLanguageTag' के बजाय 'नाम' का उपयोग करना कोई फर्क नहीं पड़ता, वे विंडोज 7 और विंडोज 8 दोनों पर समान हैं। (जैसा कि पृष्ठ कहता है -" आईईटीएफ टैग और नाम समान हैं । ") – Charles

0

System.Globalization.DateTimeFormatInfo.CurrentInfo.MonthDayPattern = "dd MMMM"; 

का उपयोग करते हुए अपने वर्तमान थ्रेड महीना और दिन प्रारूप अद्यतन करेगा। MonthDayPattern विंडोज सर्वर 2012 में बदल गया। मुझे अभी तक पता नहीं चला है।