2010-05-25 13 views
23

किसी को भी कैसे एक समयावधि बदल सकते हैं या एक ISO8601 अवधि स्ट्रिंग के लिए int करने के लिए पर सलाह दे सकते रूप http://en.wikipedia.org/wiki/ISO_8601#Durations में विस्तार से बताया?TimeSpan ISO8601 अवधि प्रारूप स्ट्रिंग को

"1 घंटा और 30 मिनट" "PT1H30M" में परिणाम होगा, उदाहरण के लिए:

int duration = 90; 
string isoString = duration.ToIsoDuration(); 
+0

की संभावित डुप्लिकेट [मैं कैसे एक सी # TimeSpan के लिए एक ISO8601 TimeSpan परिवर्तित?] (http://stackoverflow.com/questions/12466188/how-do-i-convert-an-iso8601-timespan-to-ac-sharp-timespan) – Pekka

+0

डुप्लिकेट नहीं - एक स्ट्रिंग के रूप में पार्सिंग और प्रतिनिधित्व अलग-अलग ऑपरेशन होते हैं। – Brent

उत्तर

40

अपने आप समाधान नहीं मिला, तो मैंने सोचा कि मैं हिस्सा चाहते हैं:

TimeSpan timeSpan = new TimeSpan(0, value, 0); 
    return XmlConvert.ToString(timeSpan); 
+5

पहली पंक्ति में, आप 'टाइमस्पेन टाइमस्पैन = टाइमस्पेन। फ्रॉममिन्यूट्स (वैल्यू) भी कह सकते हैं;' यह मेरी राय में अधिक स्पष्ट है। –

+3

यह छोटी अवधि के लिए अच्छा है, लेकिन जैसे ही आपके पास महीनों या वर्षों के लंबे समय तक कार्य हो रहा है, क्योंकि टाइमस्पेन उन अवधिओं का प्रतिनिधित्व नहीं कर सकता है। यह सब कुछ वापस दिनों में बदल देता है, जो गलत है क्योंकि सभी महीनों में समान संख्या में दिन नहीं होते हैं। –

+0

इसके लिए धन्यवाद। मैंने सोचा कि मैं पावरशेल समतुल्य का उल्लेख करता हूं '[System.Xml.XmlConvert] :: ToString ($ timespan) '। – deadlydog

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