2012-09-22 16 views
9

मैं स्ट्रिंग के लिए टाइमस्पेन को प्रारूपित करने का प्रयास कर रहा हूं। फिर मुझे अपने अनुकूलित स्ट्रिंग प्रारूप को उत्पन्न करने के लिए एमएसडीएन से समाप्ति मिलती है। लेकिन यह शब्द नहीं है। यह "FormatException" देता है।टाइमस्पैन टूस्ट्रिंग "[डी।] एचएच: मिमी"

क्यों? मुझे समझ में नहीं आता ...

var ts = new TimeSpan(0, 3, 25, 0); 
var myString = ts.ToString("[d'.']hh':'mm"); 

उत्तर

9

मुझे लगता है कि आप वैकल्पिक दिन और c standard format के आंशिक सेकंड भाग जैसे कुछ करने की कोशिश कर रहे हैं। जहां तक ​​मैं कह सकता हूं, यह कस्टम प्रारूप तारों के साथ सीधे संभव नहीं है। TimeSpan FormatString with optional hours आपके पास समान प्रश्न है, और मैं उनके समाधान के समान कुछ सुझाव दूंगा: एक विस्तार विधि आपके लिए प्रारूप स्ट्रिंग का निर्माण करती है।

public static string ToMyFormat(this TimeSpan ts) 
{ 
    string format = ts.Days >= 1 ? "d'.'hh':'mm" : "hh':'mm"; 
    return ts.ToString(format); 
} 

तो यह उपयोग करने के लिए:

var myString = ts.ToMyFormat(); 
+0

हां, यह निश्चित रूप से काम करेगा। लेकिन मैं ToString प्रारूप का उपयोग करूंगा। एमएसडीएन का कहना है कि मैं "[" और "]" का उपयोग कर सकता हूं। क्या यह सच है? – riofly

+0

यह कहां कहता है? केवल एक बार मैंने देखा कि '[' और '] 'यह मानक प्रारूप तारों का वर्णन करता है, लेकिन बिना कहने के कि आप वास्तव में उन प्रारूपों का उपयोग कर सकते हैं जो कस्टम प्रारूपों में हैं। –

+0

क्षमा करें, असल में मैं गलत था। – riofly

3

यह त्रुटि आमतौर पर तब होती है जब आप प्रारूप स्ट्रिंग में परिभाषित अर्थों का उपयोग करते हैं। इन्हें डीबग करने का सबसे अच्छा तरीका चुनिंदा रूप से अक्षरों को हटा देता है जब तक यह काम नहीं करता है। आपके द्वारा हटाए गए अंतिम चरित्र में समस्या थी।

इस मामले में, custom TimeSpan format strings पर देखकर, वर्ग ब्रैकेट समस्याएं हैं। , "\" के साथ उन्हें भागने उदाहरण के लिए:

var ts = new TimeSpan(0, 3, 25, 0); 
var myString = ts.ToString("\\[d'.'\\]hh':'mm"); 

[संपादित करें: जोड़ा गया]

वहाँ कोई रास्ता नहीं है ग्राहक पर उल्लेख कस्टम TimeSpan प्रारूप तार पेज पाठ छोड़ करता है, तो मान इस मामले में 0. हो रहा है , if कथन या ?: ऑपरेटर पर विचार करें।

+0

हाँ, मुझे पता है कि वर्ग कोष्ठक समस्या है। लेकिन मुझे लगता है कि मैं "[" और "]" का उपयोग केवल तभी वापस कर सकता हूं जब मान> = 0. क्या यह संभव है? – riofly

+0

@riofly यदि कोई मान http://msdn.microsoft.com/en-us/library/ee372287.aspx में 0 है तो स्ट्रिंग के एक हिस्से को छोड़ने का कोई तरीका नहीं दिखता है। शायद आह अगर कथन बेहतर है। उत्तर अपडेट किया गया है। – akton

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