2010-08-11 35 views
17

खुला एक घड़ी खिड़कीडेटटाइम.ToString ("एच") अपवाद क्यों करता है?

new DateTime(2010,01,01).ToString("h") 

देता है: "12":

new DateTime(2010,01,01).ToString("h") प्रकार का एक अपवाद System.FormatException

फिर भी ...

new DateTime(2010,01,01).ToString("h ") 

देता फेंक दिया

तो एक अतिरिक्त स्थान इस प्रारूप अपवाद को होने से क्यों रोकता है? क्या यह एक बग है?

+0

यह एक कस्टम प्रारूप है ताकि आप इसे अंतरिक्ष के बिना नहीं जोड़ सकते। –

उत्तर

38

ऐसा इसलिए लगता है क्योंकि यह एक वर्ण होने के कारण custom one के बजाय standard format string है। कस्टम प्रारूप तारों पर

string text = DateTime.Now.ToString("%h"); 

डॉक्स से::

इस फिक्सिंग का एक बेहतर तरीका % उपयोग करने के लिए है

एक कस्टम दिनांक और समय प्रारूप स्ट्रिंग दो या अधिक वर्ण के होते हैं । दिनांक और समय स्वरूपण विधियां मानक दिनांक और समय प्रारूप स्ट्रिंग के रूप में किसी एकल-वर्ण स्ट्रिंग की व्याख्या करें। यदि वे वर्ण को मान्य प्रारूप विनिर्देशक के रूप में नहीं पहचानते हैं, तो वे एक प्रारूप अपवाद फेंक देते हैं। उदाहरण के लिए, एक प्रारूप स्ट्रिंग है कि केवल विनिर्देशक "h" के होते एक मानक की तारीख और समय प्रारूप स्ट्रिंग के रूप में व्याख्या है। हालांकि, इस विशेष मामले में, एक अपवाद फेंक दिया है, क्योंकि वहाँ कोई "h" मानक दिनांक और timeformat विनिर्देशक है।

एक प्रारूप स्ट्रिंग में केवल विनिर्देशक के रूप में कस्टम दिनांक और समय प्रारूप विनिर्देशक से किसी का उपयोग करने के लिए (कि उपयोग करने के लिए "डी", "f", है, "एफ", "जी", " ज ", " एच "," K "," एम "," एम "," एस "," टी "," y ", " Z ",": ", या"/"कस्टम प्रारूप विनिर्देशक द्वारा खुद), पहले या विनिर्देशक के बाद एक अंतरिक्ष को शामिल करने या एक प्रतिशत ("%") प्रारूप एकल कस्टम दिनांक और समय विनिर्देशक से पहले विनिर्देशक शामिल हैं।

उदाहरण के लिए, "% ज" एक कस्टम दिनांक और समय प्रारूप स्ट्रिंग कि घंटे वर्तमान दिनांक और समय मान से दर्शाया प्रदर्शित करता है के रूप में व्याख्या की है। आप भी, "h" या "h" प्रारूप स्ट्रिंग का उपयोग कर सकते हैं इस घंटे के साथ परिणाम स्ट्रिंग में एक अंतरिक्ष शामिल हैं, हालांकि। निम्नलिखित उदाहरण इन तीन प्रारूप तारों को दिखाता है।

+0

धन्यवाद जॉन, मुझे लगता है कि समझ में आता है। मैं बस इसके साथ काम कर रहा हूं: dte.ToString ("h")। ट्रिम() अब समस्या के आसपास आने के लिए। –

+1

डेटटाइम.अब.ToString ("% h") - जो मेरे लिए काम करता है, बहुत धन्यवाद। मुझे लगता है कि मुझे लगता है कि अन्य वेब साइटों के बजाय आधिकारिक मैनुअल पढ़ना चाहिए था! –

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