C# - 获取2个日期之间的天数

Anu*_*nup 1 c# datetime

我的案例场景是用户选择一个财政年度,例如2015年1月1日至2015年12月31日.然后他选择了几天说'星期六','星期天'.

我想获取上述标准之间的所有日期.

我可以得到这样的日期: -

    ....
    for (var date = fromDate; date <= toDate; date = date.AddDays(1))
         temp.Add(date);        
Run Code Online (Sandbox Code Playgroud)

但如何在日期范围内只获得几天的"星期六","星期日"?

Bac*_*cks 8

使用DayOfWeek属性:

 for (var date = fromDate; date <= toDate; date = date.AddDays(1))
 {
     if (date.DayOfWeek == DayOfWeek.Sunday || date.DayOfWeek == DayOfWeek.Saturday) 
            temp.Add(date);
 }
Run Code Online (Sandbox Code Playgroud)

如果星期几的天数不是静态的:

HashSet<DayOfWeek> daysOfWeek = new HashSet<DayOfWeek> { DayOfWeek.Saturday, DayOfWeek.Sunday };
List<DateTime> temp = new List<DateTime>();
for (var date = fromDate.Date; date <= toDate; date = date.AddDays(1))
    if (daysOfWeek.Contains(date.DayOfWeek))
        temp.Add(date);
Run Code Online (Sandbox Code Playgroud)


Eri*_*ric 5

var fromDate = new DateTime(2015, 1, 1);
var toDate = new DateTime(2015, 2, 15);
var dates = Enumerable.Range(0, (int)(toDate - fromDate).TotalDays + 1)
    .Select(i => fromDate.AddDays(i))
    .Where(i => i.DayOfWeek == DayOfWeek.Saturday || i.DayOfWeek == DayOfWeek.Sunday);


foreach(var date in dates)
{
    Console.WriteLine("{0:yyyy-MM-dd ddd}", date);
}
Run Code Online (Sandbox Code Playgroud)

.Net小提琴