2008-08-25 9 views
29

पर पार्स स्ट्रिंग मेरे पास xxh का कुछ तार है: yym प्रारूप जहां xx घंटे है और yy "05h: 30m" जैसा मिनट है। टाइमस्पेन में इस प्रकार की स्ट्रिंग को कन्वर्ट करने का एक शानदार तरीका क्या है?टाइमस्पेन

उत्तर

26

यह काम करने के लिए लगता है, हालांकि यह थोड़ा hackish है:

TimeSpan span; 


if (TimeSpan.TryParse("05h:30m".Replace("m","").Replace("h",""), out span)) 
      MessageBox.Show(span.ToString()); 
+15

मैं शायद 'TimeSpan.TryParse (" hh'h: 'mm'm' ", बाहर अवधि) का उपयोग कर सुझाव है कि एक स्वच्छ और अधिक मजबूत समाधान – mike

+2

के लिए' सिवाय जब स्ट्रिंग है 25H: –

+1

टिप्पणी 30: यह समाधान 23h तक सीमित है: 59 एम – fubo

1

TimeSpan.Parse और TimeSpan.TryParse नहीं विकल्प हैं? यदि आप "अनुमोदित" प्रारूप का उपयोग नहीं कर रहे हैं, तो आपको मैन्युअल रूप से पार्सिंग करने की आवश्यकता होगी। मैं शायद आपके दो पूर्णांक मानों को एक नियमित अभिव्यक्ति में कैप्चर करता हूं, और फिर उन्हें पूर्णांक में पार्स करने का प्रयास करता हूं, वहां से आप अपने कन्स्ट्रक्टर के साथ एक नया टाइमस्पैन बना सकते हैं।

6

DateTime.ParseExact या DateTime.TryParseExact आपको इनपुट का सटीक प्रारूप निर्दिष्ट करने देता है। DateTime प्राप्त करने के बाद, आप DateTime.TimeOfDay को पकड़ सकते हैं जो TimeSpan है।

TimeSpan.TryParseExact की अनुपस्थिति में, मुझे लगता है कि मिश्रण का एक 'सुरुचिपूर्ण' समाधान बाहर है।

@buyutec जैसा कि आपको संदेह है, यह तरीका काम नहीं करेगा यदि समय अवधि 24 घंटे से अधिक हो।

+0

[टाइमस्पेन। ट्राईपर्सएक्सएक्ट] (http://msdn.microsoft.com/ एन-यूएस/लाइब्रेरी/system.timespan.tryparseexact% 28v = vs.100% 29.aspx) .NET 4.0 में जोड़ा गया था। –

2

Here'e एक संभावना:

TimeSpan.Parse(s.Remove(2, 1).Remove(5, 1)); 

और आप इसे अपने कोड में और अधिक सुरुचिपूर्ण बनाने के लिए चाहते हैं, तो एक विस्तार विधि का उपयोग करें:

public static TimeSpan ToTimeSpan(this string s) 
{ 
    TimeSpan t = TimeSpan.Parse(s.Remove(2, 1).Remove(5, 1)); 
    return t; 
} 

तो फिर तुम क्या कर सकते हैं

"05h:30m".ToTimeSpan(); 
+0

'टाइमस्पैन.TryParse (" hh'h: 'mm'm' "के बारे में क्या है अवधि) '? https://stackoverflow.com/a/26769/206730 – Kiquenet

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