Get a list of weeks for a year - with dates

前端 未结 5 1920
遇见更好的自我
遇见更好的自我 2020-12-03 06:02

I\'ve been racking my brains over this, but it\'s late on a Friday and I\'m going round in circles.

I need to create a list of working weeks for a drop down list, wi

5条回答
  •  独厮守ぢ
    2020-12-03 06:58

    I think the code below complies with 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
            });
    

提交回复
热议问题