C# 如何返回两个日期之间的周末日期列表

C# 如何返回两个日期之间的周末日期列表,c#,datetime,C#,Datetime,目前,我有这段代码返回一个包含两个日期之间所有日期的表。我怎么能把它改成只返回周末的日期呢。 其目的是使用周末日期检查DataGridView中的列标题,以“灰显”周末。我希望这是清楚的 static public List<string> GetDates(DateTime start_date, DateTime end_date) { List<string> days_list = new List<string>(); for (D

目前,我有这段代码返回一个包含两个日期之间所有日期的表。我怎么能把它改成只返回周末的日期呢。 其目的是使用周末日期检查DataGridView中的列标题,以“灰显”周末。我希望这是清楚的

static public List<string> GetDates(DateTime start_date, DateTime end_date)
{
    List<string> days_list = new List<string>();

    for (DateTime date = start_date; date <= end_date; date = date.AddDays(1))
    {
        days_list.Add(date.ToShortDateString());
    }

    return days_list;
}
静态公共列表GetDates(日期时间开始日期、日期时间结束日期)
{
列表天数\列表=新列表();

对于(DateTime date=start_date;date使用
DateTime.DayOfWeek
属性

静态公共列表GetDates(日期时间开始日期、日期时间结束日期)
{
列表天数\列表=新列表();

对于(DateTime date=start_date;date,您可以创建日期范围,然后使用@Vitor所说的
DayOfWeek
对其进行过滤:

static public List<DateTime> GetWeekendDates(DateTime start_date, DateTime end_date)
{
 return Enumerable.Range(0, (int)((end_date- start_date).TotalDays) + 1)
                  .Select(n => StartDate.AddDays(n))
                  .Where(x=>x.DayOfWeek == DayOfWeek.Saturday 
                         || x.DayOfWeek == DayOfWeek.Sunday)
                  .ToList();
}
静态公共列表GetWeekendDates(日期时间开始日期、日期时间结束日期)
{
返回可枚举范围(0,(int)((结束日期-开始日期).TotalDays)+1)
.Select(n=>StartDate.AddDays(n))
其中(x=>x.DayOfWeek==DayOfWeek.Saturday
||x.DayOfWeek==DayOfWeek.Sunday)
.ToList();
}

希望此解决方案对您有所帮助

DateTime startDate = new DateTime(2011,3,1);
DateTime endDate = DateTime.Now;

TimeSpan diff = endDate - startDate;
int days = diff.Days;
for (var i = 0; i <= days; i++)
{
    var testDate = startDate.AddDays(i);
    switch (testDate.DayOfWeek)
    {
        case DayOfWeek.Saturday:
        case DayOfWeek.Sunday:
            Console.WriteLine(testDate.ToShortDateString());
            break;
    }
}
DateTime startDate=新日期时间(2011,3,1);
DateTime endDate=DateTime.Now;
TimeSpan diff=结束日期-开始日期;
整数天=差异天;

对于(var i=0;i)这段代码做什么?为什么要帮助他?太棒了,完全错过了,谢谢你的帮助!
DateTime startDate = new DateTime(2011,3,1);
DateTime endDate = DateTime.Now;

TimeSpan diff = endDate - startDate;
int days = diff.Days;
for (var i = 0; i <= days; i++)
{
    var testDate = startDate.AddDays(i);
    switch (testDate.DayOfWeek)
    {
        case DayOfWeek.Saturday:
        case DayOfWeek.Sunday:
            Console.WriteLine(testDate.ToShortDateString());
            break;
    }
}