2012-07-24 47 views

回答

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 TimeSpan的财产。天仅仅是它的日子组成部分(例如,1天和2天的时间段,返回2,而TotalDays返回9天)。 – digEmAll 2012-07-24 14:07:34

+1

@digEmAll我不认为这是准确的。 'TotalDays'返回一个'double'并表示整个和部分天数。 'Days'返回一个'int',因此忽略任何小数部分。例如,对于'TimeSpan.FromDays(9.5)','Days' = 9,'TotalDays' = 9.5。 – 2012-07-24 14:12:23

+0

是的,我查过了,你是对的。我很抱歉,我说的话适用于其他组件,例如小时,分钟等,但因为它是TimeSpan的最大组件,所以不会持续数天。 – digEmAll 2012-07-24 14:42:43

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)); 
相关问题