C # का उपयोग करके मुझे दो DateTime वस्तुओं के बीच समय का अंतर कैसे मिलेगा?


159

DateTimeC # का उपयोग करके मुझे दो वस्तुओं के बीच समय का अंतर कैसे मिलेगा ?

जवाबों:


227

निम्न उदाहरण यह दर्शाता है कि यह कैसे करना है:

DateTime a = new DateTime(2010, 05, 12, 13, 15, 00);
DateTime b = new DateTime(2010, 05, 12, 13, 45, 00);
Console.WriteLine(b.Subtract(a).TotalMinutes);

जब इस प्रिंट को "30" निष्पादित किया जाता है, क्योंकि दिनांक / समय के बीच 30 मिनट का अंतर होता है।

परिणाम DateTime.Subtract(DateTime x)एक TimeSpan ऑब्जेक्ट है जो अन्य उपयोगी गुण देता है।


5
अंतर प्रदर्शित करने के लिए, ऐसा कुछ करें Console.WriteLine((a - b).ToString(@"hh\:mm\:ss")):। देखें: MSDN कस्टम
टाइमस्पैन

इसने मेरे लिए काम किया। मैं सिर्फ यह चाहता था कि क्लाइंट को REST कॉल करने और रिप्लाई वापस पाने में कितने सेकंड लगते हैं।
जिगलर

1
उपयोग पर ध्यान दें TotalMinutes! (नहीं Minutes)
शाहर शोकानी

64

आप TimeSpanसंरचना चाहते हैं :

TimeSpan diff = dateTime1 - dateTime2;

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

इस संरचना से दिन, घंटे, मिनट, सेकंड और मिलीसेकंड प्राप्त करने की विभिन्न विधियाँ हैं।

यदि आप केवल अंतर में रुचि रखते हैं तो:

TimeSpan diff = Math.Abs(dateTime1 - dateTime2);

आदेश की परवाह किए बिना समय के बीच आपको सकारात्मक अंतर देगा।

यदि आपको अभी समय घटक मिला है, लेकिन समय आधी रात तक विभाजित हो सकता है, तो वास्तविक जानकारी प्राप्त करने के लिए आपको अवधि में 24 घंटे जोड़ने की आवश्यकता है:

TimeSpan diff = dateTime1 - dateTime2;
if (diff < 0)
{
    diff = diff + TimeSpan.FromDays(1);
}

नमस्ते, अगर datetime2 09:00 है और dateTime1 18:00 है तो diff 09Hours 00 मिनट है। तब datetime2 के लिए समीकरण 21:00 है और dateTime1 03:00 है फिर अंतर नकारात्मक और गलत में है। इसे कैसे हल करें?
प्राणेश जनार्दन

@ चरणेश - यदि वस्तुओं में कोई दिनांक है तो कोई समस्या नहीं होनी चाहिए। यदि उनके पास एक समय नहीं है, तो या तो पूर्ण अंतर ले लें या सकारात्मक अंतर देने के लिए 24 घंटे जोड़ दें। जो सही है वह आपके आवेदन पर निर्भर करेगा।
ChrisF

हाँ, मैंने उन टिप्पणियों को पहले ही हटा दिया! क्या आप मुझे उर स्पष्टीकरण के लिए एक कोड उदाहरण दिखा सकते हैं?
प्राणेश जनार्दन

30

क्या आप की जरूरत का उपयोग है दिनांक समय classs घटाना विधि है, जो एक रिटर्न TimeSpan

var dateOne = DateTime.Now;
var dateTwo = DateTime.Now.AddMinutes(-5);
var diff = dateTwo.Subtract(dateOne);
var res = String.Format("{0}:{1}:{2}", diff.Hours,diff.Minutes,diff.Seconds));

10

जिस तरह से मैं आम तौर पर यह दो DateTime घटाना है और यह मुझे एक TimeSpan हो जाता है जो मुझे अलग बताएगा।

यहाँ एक उदाहरण है:

DateTime start = DateTime.Now;
// Do some work
TimeSpan timeDiff = DateTime.Now - start;
timeDiff.TotalMilliseconds;

4

यदि वे दोनों यूटीसी तिथि-समय मान हैं जो आप कर सकते हैं TimeSpan diff = dateTime1 - dateTime2;

अन्यथा हर एक संभावित मामले में सही उत्तर पाने की आपकी संभावना शून्य है।


3
 var startDate = new DateTime(2007, 3, 24);

 var endDate = new DateTime(2009, 6, 26);

 var dateDiff = endDate.Subtract(startDate);

 var date = string.Format("{0} years {1} months {2} days", (int)dateDiff.TotalDays / 365, 
 (int)(dateDiff.TotalDays % 365) / 30, (int)(dateDiff.TotalDays % 365) / 30);

 Console.WriteLine(date);

2

आपको एक TimeSpan का उपयोग करने की आवश्यकता है । यहाँ कुछ नमूना कोड है:

TimeSpan sincelast = TimeSpan.FromTicks(DateTime.Now.Ticks - LastUpdate.Ticks);

2
या सिर्फTimeSpan sincelast = DateTime.Now - LastUpdate;
बेन एम

2
private void button1_Click(object sender, EventArgs e)
{
    TimeSpan timespan;
    timespan = dateTimePicker2.Value - dateTimePicker1.Value;
    int timeDifference = timespan.Days;
    MessageBox.Show(timeDifference.ToString());
}

2

आप दो डेटाटाइम ऑब्जेक्ट के बीच अंतर को प्राप्त करने के लिए निम्नलिखित तरीके से उपयोग कर सकते हैं। मान लीजिए कि DateTime ऑब्जेक्ट्स dt1 और dt2 हैं तो कोड।

TimeSpan diff = dt2.Subtract(dt1);
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.