在.net中,知道周数我怎样才能得到工作日的日期?

9 .net datetime dayofweek week-number

我想在C#中创建一个函数,一个星期的数字将在那一周返回给我.

例如,对于第40周,我怎样才能得到这些日子:4/10,5/10,6/10,7/10,8/10,9/10,10/10.

先感谢您!

JDu*_*ley 9

我认为这应该做你想要的:

    public static DateTime[] WeekDays(int Year, int WeekNumber)
    {
        DateTime start = new DateTime(Year, 1, 1).AddDays(7 * WeekNumber);
        start = start.AddDays(-((int)start.DayOfWeek));
        return Enumerable.Range(0, 7).Select(num => start.AddDays(num)).ToArray();
    }
Run Code Online (Sandbox Code Playgroud)

虽然我把星期日视为一周的第一天,但​​是如果你希望星期一作为第一天的变化范围从(0,7)到(1,7).

如果你想符合ISO标准,我认为这应该有效:

    public static DateTime[] WeekDays(int Year, int WeekNumber)
    {
        DateTime start = new DateTime(Year, 1, 4);
        start = start.AddDays(-((int)start.DayOfWeek));
        start = start.AddDays(7 * (WeekNumber - 1));
        return Enumerable.Range(0, 7).Select(num => start.AddDays(num)).ToArray();
    }
Run Code Online (Sandbox Code Playgroud)

  • 据我记得一个老项目,上面的代码在使用ISO-Weeks(8601经常在欧洲使用的东西)进行计算时也会起作用,如果基数会被调整(参见我的回答).但也许这已经改变了.net4. (2认同)