目前我有这个代码返回两个日期之间所有日期的表格。我怎么能改变这个让它只返回周末日期。 这样做的目的是使用周末日期来检查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;
}
答案 0 :(得分:8)
使用DateTime.DayOfWeek
属性。
https://msdn.microsoft.com/en-US/library/system.datetime.dayofweek(v=vs.110).aspx
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))
{
if (date.DayOfWeek == DayOfWeek.Sunday || date.DayOfWeek == DayOfWeek.Saturday)
days_list.Add(date.ToShortDateString());
}
return days_list;
答案 1 :(得分:3)
你可以创建一系列日期,然后使用DayOfWeek
过滤它们,因为@Vitor说:
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();
}
答案 2 :(得分:3)
希望此解决方案能够帮助您
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;
}
}
在上面的代码中,我发现2011年3月1日至今的周六和周日。所以我采用了两个名为startDate和endDate的变量。在那之后我有他们之间的差异然后通过for循环我检查星期几是星期六或星期日