2011-05-05 10 views
20

के बीच सप्ताह की संख्या की गणना करने के लिए वास्तव में के रूप में यह टिन पर कहते हैं, मैं तो बस सी # में दो दिनांकों के बीच सप्ताह (अर्थात 7-दिन फैला, नहीं कैलेंडर सप्ताह) की गिनती के लिए सबसे कारगर तरीका की जरूरत है।लिए सबसे कारगर तरीका दो datetimes

+0

क्या आपका मतलब कैलेंडर में सप्ताह है? – V4Vendetta

+0

अन्य प्रकार के सप्ताह क्या हैं? और उनमें से कितने सी #, या डेटाटाइम के साथ कुछ भी करने के लिए है? – McAzzaMan

+2

मेरा मतलब है कि दो दृष्टिकोण है जिससे कोई भी 7 दिन की अवधि एक सप्ताह हो सकती है और दूसरा जहां यह कैलेंडर का पालन करता है जिसे विशिष्ट तिथि सीमाओं पर सप्ताह मिलते हैं। चूंकि आप तारीखों में काम कर रहे हैं क्योंकि कैलेंडर कैलेंडर के साथ जांच करने के लिए यह अधिक प्रासंगिक है। – V4Vendetta

उत्तर

38

द्वारा 7.

int weeks = (date1 - date2).TotalDays/7; 

दिन और विभाजन की संख्या जाओ तुम अच्छी तरह से अप करने के लिए 6 दिनों कि सप्ताह की संख्या में शामिल नहीं किया जाएगा की एक शेष हो सकता है।

+1

धन्यवाद। आप इस बात पर विश्वास नहीं करेंगे कि इस ऑनलाइन के लिए कितने कचरे के जवाब हैं, और मेरे पास थोड़ा मस्तिष्क-फार्ट दिन है और कुछ भी नहीं आ सकता है। – McAzzaMan

+1

यह उत्तर तब काम नहीं करता जब आप अन्य 'प्रकार' सप्ताह के माप को जानना चाहते हैं - जिससे कैलेंडर सप्ताह वांछित हैं, कोई मनमाना अवधि नहीं है। तो उदाहरण के लिए कहें कि आपके पास आवृत्ति मानदंड है जिससे कुछ "कैलेंडर सप्ताह में" किया जाना चाहिए। यदि यह शनिवार को किया गया था, तो रविवार को आप "1" का परिणाम देखना चाहते हैं क्योंकि अब यह एक नया कैलेंडर सप्ताह है। शून्य प्राप्त करने के लिए आपको उसी कैलेंडर सप्ताह में दो तिथियों की तुलना करना होगा। यह उत्तर "0" देगा और अगले शनिवार तक शून्य देना जारी रखेगा। ओपी टिप्पणियों में 'वी 4 वेंडेटा' टिप्पणी देखें। – DAG

+1

@ डीएजी - क्या आपने सवाल पढ़ा? यही वह नहीं है जिसे उसने पूछा था। – Oded

5

मैं तुम्हें कैलेंडर के आधार पर इस प्राप्त करना चाहते हैं मान। इसके लिए आपको System.Globalization

DateTime date1 = DateTime.Now; 
DateTimeFormatInfo dinfo = DateTimeFormatInfo.CurrentInfo; 
dinfo.Calendar.GetWeekOfYear(date1, CalendarWeekRule.FirstFullWeek, DayOfWeek.Monday) 

अपनी जरूरत के आधार पर की जरूरत है आप कैलेंडर सप्ताह नियम और सप्ताह के पहले दिन सेट करना होगा।

यह आपको कैलेंडर के लिए एक सप्ताह संख्या देता है। आप अपने अन्य तिथि के लिए एक ही प्राप्त कर सकते हैं, अंतर अपने सप्ताह गिनती

आशा इस मदद करता है।

+0

यह विभिन्न वर्षों में फैले दो तिथियों के बहुत ही सामान्य परिदृश्य के तहत विफल रहता है। सभी वर्षों में 52 सप्ताह नहीं हैं, इसलिए आपके उत्तर में तत्काल स्पष्ट समाधान नहीं है। – DAG

3

दिनों की संख्या प्राप्त करने के लिए इस प्रयास करें:

TimeSpan ts = date1.Subtract(date2); 
int dateDiff = ts.Days(); 

फिर, @Oded की तरह कहा, 7

int totalWeeks = (int) dateDiff/7; 

चीयर्स द्वारा विभाजित!

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