मैं एक सरल विधि है कि मैं एक लंबे समय पहले तैयार है और बस अपने ब्लॉग पर आज तैनात उपयोग कर रहा हूँ:
public static class TimeSpanExtensions
{
static int[] weights = { 60 * 60 * 1000, 60 * 1000, 1000, 1 };
public static TimeSpan ToTimeSpan(this string s)
{
string[] parts = s.Split('.', ':');
long ms = 0;
for (int i = 0; i < parts.Length && i < weights.Length; i++)
ms += Convert.ToInt64(parts[i]) * weights[i];
return TimeSpan.FromMilliseconds(ms);
}
}
इस से पहले दी सरल समाधान तुलना में बहुत अधिक स्थितियों को संभाल सकता है, लेकिन इसकी है अपनी कमियों मैं इसे here पर चर्चा करता हूं।
अब, अगर आप नेट 4 में हैं आप के लिए ToTimeSpan कार्यान्वयन छोटा कर सकते हैं:
public static TimeSpan ToTimeSpan(this string s)
{
return TimeSpan.FromMilliseconds(s.Split('.', ':')
.Zip(weights, (d, w) => Convert.ToInt64(d) * w).Sum());
}
तुम भी यह एक एक लाइनर कर सकते हैं अगर आप क्षैतिज स्क्रीन राज्य का उपयोग कोई आपत्ति नहीं है ..
यह स्थानीयकरण समर्थन करने की आवश्यकता है? (उदाहरण के लिए 30.15 भाषा सेटिंग्स के अनुसार) –
प्रारूप हमेशा एचएच होगा: मिमी लेकिन हो सकता है> 24. – jlp
यह देखें [प्रश्न] (http://stackoverflow.com/questions/26760/c-parse-string -to-timespan) (डुप्लिकेट)। – Ando