2013-03-28 6 views
5

.Net में, '2:45' को दशमलव 2.75 पर बदलने के लिए कोई तरीका है?दशमलव के लिए पार्स टाइम स्ट्रिंग?

पूर्व:

decimal d = TimeToDecimal("2:45"); 
Console.WriteLine(d); 

//output is 2.75 

यह एक अपवाद फेंक चाहिए अगर अमान्य डेटा, पूर्व, मिनट 60 या नहीं में ज: मीटर प्रारूप।

धन्यवाद

+0

http://stackoverflow.com/q/5366285/82682 – joce

+5

@ जोस का डुप्लिकेट कोई मौका नहीं है। – IronMan84

+0

पूरी तरह से। "हार्ड" भाग 'डेटटाइम। पर्स()' है जो आवश्यक अपवाद फेंक देगा। शेष 60 तक विभाजित होने के बारे में है। यह एक डुप्ली है। – joce

उत्तर

13

निम्नलिखित इच्छा उत्पादन 2.75:

TimeSpan time = TimeSpan.Parse("2:45"); 
decimal d = (decimal) time.TotalHours; 

Console.WriteLine(d); 

ध्यान दें कि TimeSpan.TotalHours property प्रकार double, नहीं decimal की है।

TimeSpan.Parse method के लिए प्रलेखन से, यह OverflowException फेंक देगा यदि "कम से कम एक दिन, घंटे, मिनट, या सेकंड घटक इसकी वैध सीमा से बाहर है", ताकि आपके लिए इनपुट सत्यापन की देखभाल करनी चाहिए। TimeSpan.TryParse method भी देखें।

4
private decimal TimeToDecimal(string Time) 
{ 
    DateTime dt = DateTime.Parse(Time); 
    decimal result = dt.Hour+ (dt.Minute/60.0m); 
    return result; 
} 
+0

मुझे लगता है कि आप इसे पढ़ना चाहते हैं: 'दशमलव परिणाम = dt.Hour + (dt.Minute/60.0m);' – rsbarro

+0

मुझे लगता है कि सबसे अच्छा समाधान 'दशमलव परिणाम = dt.Hour + होगा (dt.Minute/60.0m) + (डीटी सेकेंड/3600.0 मीटर); ' – K0D4

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