2010-02-24 16 views
29

मैं दो दिनों के बीच के दिनों की संख्या की गणना करने के कई तरीकों की कोशिश कर रहा हूं, मेरा मतलब है, पूरे दिन गिनना। मैं क्या जरूरत का एक उदाहरण:दो तिथियों के बीच दिन अंतर

START DATE   END DATE   Day Count 

24/02/2010 16:26  24/02/2010 16:26   1 
20/02/2010 18:16  24/02/2010 16:26   5 
31/12/2009 20:00  24/02/2010 16:26   56 
15/07/2009 20:59  24/02/2010 16:26   225 
+3

आप को स्वीकार करने में अभी तक एक जवाब। आपने जो भी कोशिश की है उसे पोस्ट नहीं किया है। क्या हमारे पास तीसरी हड़ताल है? –

उत्तर

51

टाइमस्पेन को टाइमस्पेन प्राप्त करने के लिए घटाया जा सकता है। टाइमस्पैन में कुल दिन होता है जो कि दिनों की संख्या है (इसमें आंशिक दिन भी शामिल हैं)।

int DaysBetween(DateTime d1, DateTime d2) { 
    TimeSpan span = d2.Subtract(d1); 
    return (int)span.TotalDays; 
} 

नोट समय फैला प्रवेश किया है। यदि डी 1 = 1/9/11 और डी 2 = 1/11/11, तो d1.subtract (d2) = -2 दिनों के timespan। तो आप ऐसी समयावधि उपयोग करने के लिए पता लगाने के लिए यदि दिनांक एक दूसरे के X दिनों के अंदर कर रहे हैं चाहते हैं तो आपको कुल दिनों का निरपेक्ष मान लेने की जरूरत ...

Math.Abs(span.TotalDays) 
+0

VB.NET में मेरे समाधान: मंद ts TimeSpan ts के रूप में = s.Subtract (DateTime.Parse (ज)) मंद दिनों पूर्णांक के रूप में दिन = ts.TotalDays + 1 –

15

आप (के रूप में यह एक ही subtraction operator है, या DateTimeOffset, और यह recommended structure to use for date values in .NET है) DateTime के दो उदाहरणों पर subtraction operator उपयोग कर सकते हैं एक TimeSpan उदाहरण मिलता है।

एक बार आपके पास यह हो जाने के बाद, TimeSpan का प्रतिनिधित्व करने वाले पूरे दिनों की संख्या प्राप्त करने के लिए आप Days property पर कॉल कर सकते हैं।

यदि आप पूरे और आंशिक दिनों की संख्या चाहते हैं, तो TotalDays property देखें।

अपने विशिष्ट मामले में, ऐसा लगता है कि आप जो कुछ भी मूल्य Days संपत्ति रिटर्न के लिए 1 जोड़ना चाहते हैं, के रूप में अपने कस्टम गणना इंगित करता है कि दो DateTime उदाहरणों है कि एक ही मूल्य का प्रतिनिधित्व करने के लिए, परिणाम है 1.

9
DateTime dtOne; 
DateTime dtTwo; 

// to get the total days in between 
int answer = (dtTwo - dtOne).TotalDays 
+6

'TimeSpan.TotalDays' एक डबल रिटर्न , इसलिए आपको वहां 'int' में रूपांतरण की आवश्यकता होगी। – ChrisF

+1

वास्तव में, आप केवल टाइमस्पेन का उपयोग कर सकते हैं। दिन यदि आप वापसी प्रकार के रूप में int चाहते हैं – makoshichi

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