2012-05-10 19 views
30

मेरे पास दो तिथियां हैं, एक दूसरे की तुलना में कम है। मैं इस तरह के इस एकदिन, घंटे, मिनट, दो तिथियों के बीच सेकंड

"0 दिन, 0 घंटे, 23 मिनट, 18 सेकंड"

दो तिथियों के बीच के अंतर को प्रतिनिधित्व के रूप में एक स्ट्रिंग बनाना चाहते हैं। मैं इस स्ट्रिंग के इन तत्वों को कैसे प्राप्त कर सकता हूं?

+1

धन्यवाद दोस्तों - काश मैं आपके सभी उत्तरों को स्वीकार कर सकता हूं लेकिन इसकी अनुमति नहीं है इसलिए मैंने आपके सभी उत्तरों को उखाड़ फेंक दिया है। –

उत्तर

70

TimeSpan वस्तु आप की जरूरत है:

TimeSpan span = (DateTime.Now - DateTime.Now); 

String.Format("{0} days, {1} hours, {2} minutes, {3} seconds", 
    span.Days, span.Hours, span.Minutes, span.Seconds); 
+0

लेकिन क्या यह मुझे दिन, घंटे, मिनट और सेकंड देगा? –

+2

http://msdn.microsoft.com/en-us/library/system.timespan.aspx –

+0

बस स्पैन का उपयोग करें। दिन, span.Hours आदि ... –

9

जब आप किसी अन्य से DateTime घटाते हैं, तो आपको TimeSpan उदाहरण मिलता है, जो उन मानों को उजागर करता है।

TimeSpan diff = DateTime.Now - DateTime.Today; 
string formatted = string.Format(
         CultureInfo.CurrentCulture, 
         "{0} days, {1} hours, {2} minutes, {3} seconds", 
         diff.Days, 
         diff.Hours, 
         diff.Minutes, 
         diff.Seconds); 
2

आप

TimeSpan() 

का उपयोग कर कि निश्चित रूप से आप क्या

3

एक TimeSpan का उपयोग करना चाहते हैं कर सकते हैं की कोशिश की है

DateTime startTime = DateTime.Now; 

DateTime endTime = DateTime.Now.AddSeconds(75); 

TimeSpan span = endTime.Subtract (startTime); 
Console.WriteLine("Time Difference (seconds): " + span.Seconds); 
Console.WriteLine("Time Difference (minutes): " + span.Minutes); 
Console.WriteLine("Time Difference (hours): " + span.Hours); 
Console.WriteLine("Time Difference (days): " + span.Days); 

String yourString = string.Format("{0} days, {1} hours, {2} minues, {3} seconds", 
    span.Days, span.Hours, span.Minutes, span.Seconds); 
1

इस तरह कुछ कैसे?

TimeSpan diff = dateTimeNew - dateTimeOld; 
    string output = string.Format("{0} days, {1} hours, {2} minues, {3} seconds", diff.Days, diff.Hours, diff.Minutes, diff.Seconds); 
    Console.WriteLine(output); 
2
DateTime myDay = DateTime.Now; 
    DateTime otherDate = DateTime.Now.AddYears(1); 
    var test = otherDate.Subtract(myDay); 
    Console.WriteLine("Days:" + test.Days + "Hours:" + test.Hours +"Minutes" + test.Minutes +"Seconds" + test.Seconds); 

यहाँ परीक्षण प्रकार टाइमस्टैम्प

+2

बस भ्रम से बचने के लिए, _ TotalSeconds_ ** कुल ** सेकंड की संख्या, इसलिए 1 घंटा टाइमपैन 3,600 कुल सेकेंड लौटाएगा। _.Seconds_ संपत्ति 0 सेकंड वापस आ जाएगी क्योंकि 1 घंटे के समय में कोई भी "बचे हुए" नहीं है। – CodeHxr

+1

@CodeHxr, दाएं। मैं इसे अद्यतन करने जा रहा हूं – Habib

3

उपयोग TimeSpan वर्ग है, जो आप जब तुम दिनांकों घटाना मिलेगा की है।

आप आउटपुट को standard या custom प्रारूप स्ट्रिंग का उपयोग करके प्रारूपित कर सकते हैं।

TimeSpan ts = DateTime.Now - DateTime.Today; 
Console.WriteLine(
    string.Format("{0:%d} days, {0:%h} hours, {0:%m} minutes, {0:%s} seconds", ts) 
); 

IMO, यह बजाय string.Format उपयोग करने के लिए स्वच्छ और आसान है:

"0 दिन, 0 घंटे, 23 मिनट, 18 सेकंड"

की तरह कुछ के साथ किया जा सकता है अपने प्रारूप स्ट्रिंग में शब्दों से बचने के लिए (यदि आपको अभी .ToString का उपयोग किया गया है) या इसे मैन्युअल रूप से निर्मित करना होगा।

1
TimeSpan diffTime = dateTimeNew -PreviousDate; 
int days=diffTime.Days; 
int hours=diffTime.Hours; 
int minutes=diffTime.Minutes; 
int seconds=diffTime.Seconds; 
+0

ओपी गणना के परिणाम से एक स्ट्रिंग बनाना चाहता है। वह हिस्सा आपके उत्तर से गायब है। – kRiZ

2

भूल जाते हैं कि अगर आप इस गणना पोर्टेबल होना चाहता हूँ आप यूटीसी के रूप में यह स्टोर करने के लिए और फिर आप इसे स्थानीय समय में कनवर्ट प्रदर्शित जब जरूरत न करें। एक सामान्य नियम स्टोर के रूप में यूटीसी के रूप में तारीखें और प्रस्तुति के लिए स्थानीय समय में परिवर्तित करें।

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