2011-04-18 10 views
8

निम्नलिखित कोडदिनों घंटे नहीं के लिए एक TimeSpan फ़ॉर्मेट करने के लिए कैसे

Console.WriteLine("{0:%h} hours {0:%m} minutes", 
        new TimeSpan(TimeSpan.TicksPerDay)); 

इस उत्पादन का उत्पादन:

0 घंटे 0 मिनट

क्या मैं चाहूँगा इस उत्पादन होता है:

24 घंटे 0 मिनट

मुझे इस प्रारूप स्ट्रिंग में क्या याद आ रही है?

पीएस मुझे पता है कि मैं टाइमस्पेन को मैन्युअल रूप से दिन और घंटों में फेंक सकता हूं, और दोनों को गुणा कर सकता हूं लेकिन कस्टम प्रारूप स्ट्रिंग का उपयोग करना चाहूंगा, क्योंकि इन टाइमपैंस को चांदी की रोशनी डाटाग्रिड में प्रदर्शित किया जा रहा है और लोग दिन में नहीं, शुक्रवार को देखने की उम्मीद कर रहे हैं।

उत्तर

13

MSDN के अनुसार, %h का उपयोग कर आप

समय अंतराल कि दिनों के हिस्से के रूप में नहीं गिने जाते हैं पूरे घंटों की संख्या दिखाएगा।

मुझे लगता है कि आप TimeSpan वर्ग की तरह की TotalHours संपत्ति का उपयोग करने की आवश्यकता होगी:

TimeSpan day= new TimeSpan(TimeSpan.TicksPerDay); 
Console.WriteLine("{0} hours {1} minutes", (int)day.TotalHours, day.Minutes); 

अद्यतन

आप पूरी तरह प्राप्त करने के लिए कहा गया है सक्षम होने के लिए की जरूरत है ToString विधि पर कस्टम स्वरूपण पास करके प्रारूप, आपको शायद अपना खुद का CustomTimeSpan क्लास बनाना होगा रों। दुर्भाग्य से, आप struct से प्राप्त नहीं कर सकते हैं, इसलिए आपको इसे ग्राउंड अप से बनाना होगा।

+0

के लिए धन्यवाद अद्यतन --- यही है कि मुझे किनारे पर एक कस्टम प्रकार की ओर धकेल दिया है। –

+1

आपको इसे कम करना पड़ सकता है अन्यथा कुल संपत्ति संपत्ति सही आंकड़े नहीं दिखाएगी। डिम एक्स के रूप में नया टाइमस्पैन (0, 0, 3600) स्ट्रिंग.फॉर्मेट ("{0} घंटा: {1} मिनट", सीआईएनटी (मैथ। ट्रांकेट (एक्स कुलहोर्स)), x.Minutes) – user1263981

10

TimeSpan से कुल घंटे प्राप्त करने के लिए प्रारूप विकल्प प्रतीत नहीं होता है। आपका सबसे अच्छा शर्त के बजाय TotalHours संपत्ति का उपयोग करने के होगा:

var mySpan = new TimeSpan(TimeSpan.TicksPerDay); 
Console.WriteLine("{0} hours {1} minutes", (int)mySpan.TotalHours, mySpan.Minutes); 

TotalHours एक डबल रिटर्न ताकि आप इसे करने के लिए सिर्फ पूर्णांक हिस्सा काट-छांट करने की आवश्यकता के रूप में यह आंशिक घंटे भी शामिल है।

+0

ठीक है, जैसा कि मैंने कहा था कि मुझे पता है कि मैं समय-समय पर बस्ट कर सकता हूं, लेकिन मुझे नहीं लगता कि मैं इस दृष्टिकोण के साथ क्या कर सकता हूं, प्रारूप की अवधि को इसके टॉस्ट्रिंग विधि में पास किया गया है। –

+0

@ राल्फ - हाँ आप 'टाइमस्पेन' को "बस्टिंग" कर रहे हैं लेकिन इसमें कोई गुणा की आवश्यकता नहीं है। – ChrisF

+0

@ChrisF - पर्याप्त सच है, कुल घंटे * 24 + घंटे से आसान है, लेकिन कठिनाई बनी हुई है। मुझे प्रारूप स्ट्रिंग की आवश्यकता है। --- और मुझे लगता है कि यह संभव नहीं है। –