2012-07-24 7 views
7

क्या सप्ताह के विशिष्ट दिनों को खींचने और उनकी तिथियों को प्रदर्शित करने के लिए तिथि सीमा दी गई है?लिंक से किसी दिए गए रेंज के भीतर सप्ताह के विशिष्ट दिन पुनर्प्राप्त करें?

तो, यदि मेरी तिथि सीमा 08/17/2012 से 09/17/2012 तक है, तो क्या संभव है, लिनक का उपयोग करके, सभी गुरुवार और मंगलवार को कहें?

उत्तर

8

आप दिनांकों के बीच दिनों की संख्या निर्धारित कर सकते हैं, तो हफ्ते में आपकी रुचि है की दिन पर सभी दिनांक और फिल्टर उत्पन्न करते हैं।

var start = DateTime.Parse("08/17/2012"); 
var end = DateTime.Parse("09/17/2012"); 
int numberOfDays = end.Subtract(start).Days + 1; 
var daysOfWeek = new[] { DayOfWeek.Tuesday, DayOfWeek.Thursday }; 

var dates = Enumerable.Range(0, numberOfDays) 
         .Select(i => start.AddDays(i)) 
         .Where(d => daysOfWeek.Contains(d.DayOfWeek)); 
+0

दिनों लेकिन TotalDays का उपयोग न करें टाइमस्पैन की संपत्ति। दिन केवल दिन का घटक होता है (उदाहरण के लिए 1 सप्ताह और 2 दिनों के समय के लिए, रिटर्न 2, जबकि कुल दिन 9 दिन लौटाते हैं)। – digEmAll

+1

@digEmAll मुझे नहीं लगता कि यह सही है। 'टोटलडेज़ 'एक' डबल 'देता है और पूरे और आंशिक दिनों का प्रतिनिधित्व करता है। 'दिन' एक 'int' देता है, इस प्रकार किसी भी आंशिक भाग को अनदेखा करता है। उदाहरण के लिए, 'टाइमस्पेन। फ्रॉमडेज़ (9.5) ',' दिन' = 9, 'कुलदेव' = 9.5 के लिए। –

+0

हां, मैंने चेक किया और आप सही हैं। मैं क्षमा चाहता हूं, मैंने जो कहा है, उदाहरण के लिए अन्य घटकों जैसे घंटे, मिनट और इतने पर लागू होता है लेकिन दिनों के लिए नहीं, क्योंकि यह टाइमस्पैन का सबसे बड़ा घटक है :) – digEmAll

4
var start = new DateTime(2012, 8, 17); 
var end = new DateTime(2012, 9, 17); 

var daysToChoose = new DayOfWeek[] { DayOfWeek.Thursday, DayOfWeek.Tuesday }; 

var dates = Enumerable.Range(0, (int)(end - start).TotalDays + 1) 
         .Select(d => start.AddDays(d)) 
         .Where(d => daysToChoose.Contains(d.DayOfWeek)); 
संबंधित मुद्दे