我正试图在两个时间段之间循环通过周的每一天
DateTime start = new DateTime(2010, 1, 1);
DateTime end = new DateTime(2011, 12, 12);
我已设法使用以下代码获取这些日期之间的天数
TimeSpan range = (end - start);
结果是710。
我现在希望每个月能够获得“星期几”,
例如
扬 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 171 18 19 20。 。
匹配
M T W T F S S M T W T F S S
我知道c#有DateTime类DayOfWeek的属性,它获取星期几 我的问题是构建一个循环来执行上述操作?
人
答案 0 :(得分:20)
这将循环显示从开始日期到结束日期的所有日期,并获取每个日期的星期几。
DateTime startDate = new DateTime(2010, 1, 1);
DateTime endDate = new DateTime(2011, 12, 12);
for (DateTime date = startDate; date <= endDate; date = date.AddDays(1))
{
DayOfWeek dw = date.DayOfWeek;
// ...
}
除非你真的担心优化,否则我不会为更复杂的东西而兴奋。
答案 1 :(得分:3)
我喜欢以下内容:
static IEnumerable Days(DateTime start, DateTime end)
{
while (start < end)
{
string day = start.ToString("ddd");
start = start.AddDays(1);
yield return day;
}
}
如何使用它:
foreach(string s in Days(new DateTime(2010, 1, 1), new DateTime(2010, 2, 1)))
{
Console.WriteLine(s);
}
当然,你可以修改它以返回各种类型。
答案 2 :(得分:3)
使用LINQ:
DateTime start = new DateTime(2010, 1, 1);
DateTime end = new DateTime(2011, 12, 12);
int days = (end - start).Days;
Enumerable
.Range(0, days)
.Select(x => start.AddDays(x))
.ToList()
.ForEach(d =>
{
DayOfWeek dayOfWeek = d.DayOfWeek;
// do what you want
});