获取一年的周列表 - 包含日期

Dar*_*den 7 .net c# asp.net

我一直在绞尽脑汁,但是星期五已经很晚了,我会围成一圈.

我需要为下拉列表创建一个工作周列表,并将周数作为值.所以代码会输出:

8月22日星期一 - 9月26日星期五8月
29日
星期一 - 9月2日星期五9月5日星期一 - 9月9日星期五

等等..

整整一年.任何想法我将如何实现这一目标?

谢谢.

spe*_*der 26

我认为以下代码符合ISO 8601:

var jan1 = new DateTime(DateTime.Today.Year , 1, 1);
//beware different cultures, see other answers
var startOfFirstWeek = jan1.AddDays(1 - (int)(jan1.DayOfWeek));
var weeks=
    Enumerable
        .Range(0,54)
        .Select(i => new {
            weekStart = startOfFirstWeek.AddDays(i * 7)
        })
        .TakeWhile(x => x.weekStart.Year <= jan1.Year)
        .Select(x => new {
            x.weekStart,
            weekFinish=x.weekStart.AddDays(4)
        })
        .SkipWhile(x => x.weekFinish < jan1.AddDays(1) )
        .Select((x,i) => new {
            x.weekStart,
            x.weekFinish,
            weekNum=i+1
        });
Run Code Online (Sandbox Code Playgroud)