今天的最后6个星期五

Jam*_*moD 0 .net c# datetime

这是一个非常具体的问题,我需要在C#.NET中过去6个星期五的日期.目前,我们正在通过一个SQL数据库来完成此任务,该数据库的表格中包含了一年中星期五的日期.

这有两个问题,

1)当我非常确定C#可以做到这一点时,对数据库似乎是一个不必要的查询.

2)我必须记得在年底加入明年.

我已经浏览了网络,我确定在某个地方有一个帖子可以清楚地向我显示答案,但我似乎无法找到它!

我希望有人可以帮我解决这个问题的代码.

提前谢谢了!

Ily*_*nov 5

主要想法是选择今天的第一个星期五,一次选择一个星期:

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)