这是一个非常具体的问题,我需要在C#.NET中过去6个星期五的日期.目前,我们正在通过一个SQL数据库来完成此任务,该数据库的表格中包含了一年中星期五的日期.
这有两个问题,
1)当我非常确定C#可以做到这一点时,对数据库似乎是一个不必要的查询.
2)我必须记得在年底加入明年.
我已经浏览了网络,我确定在某个地方有一个帖子可以清楚地向我显示答案,但我似乎无法找到它!
我希望有人可以帮我解决这个问题的代码.
提前谢谢了!
主要想法是选择今天的第一个星期五,一次选择一个星期:
var now = DateTime.Now;
DateTime nearestFridayBeforeToday;
if(now.DayOfWeek != DayOfWeek.Friday)
{
nearestFridayBeforeToday = now.AddDays(DayOfWeek.Friday - now.DayOfWeek) //returns first friday after today
.AddDays(-7); //so we need to subtract one week
}
else
{
nearestFridayBeforeToday = now;
}
var sixFridaysBeforeNow = Enumerable.Range(0, 6)
.Select(n => nearestFridayBeforeToday.AddDays(-7 * n));
//print results
var r = sixFridaysBeforeNow.Select(d => string.Format("{0} : {1}", d, d.DayOfWeek));
Console.WriteLine (string.Join(Environment.NewLine, r));
Run Code Online (Sandbox Code Playgroud)
打印:
6/21/2013 3:37:52 PM : Friday
6/14/2013 3:37:52 PM : Friday
6/7/2013 3:37:52 PM : Friday
5/31/2013 3:37:52 PM : Friday
5/24/2013 3:37:52 PM : Friday
5/17/2013 3:37:52 PM : Friday
Run Code Online (Sandbox Code Playgroud)