需要根据年 - 周 - 日计算日期

时间:2011-07-12 13:49:47

标签: c# datetime-generation

当我收到年份,周数和星期几时,如何计算C#中的日期。例如: 年= 2011年 周= 27 day = 6

结果应该是2011-7-10


感谢所有人。我基于维基百科算法解决了它。

2 个答案:

答案 0 :(得分:2)

此处没有C#代码(抱歉),但假设您正在讨论ISO周日期,您可以找到一个通用算法,用Wikipedia计算ISO周日期的格里高利日期。希望它有所帮助。

答案 1 :(得分:2)

这应该有效:

 public static DateTime GetDateTime(int year, int week, int day, CultureInfo cultureInfo)
    {
        DateTime firstDayOfYear = new DateTime(year, 1, 1);
        int firstWeek = cultureInfo.Calendar.GetWeekOfYear(firstDayOfYear, cultureInfo.DateTimeFormat.CalendarWeekRule, cultureInfo.DateTimeFormat.FirstDayOfWeek);
        int dayOffSet = day - (int)cultureInfo.DateTimeFormat.FirstDayOfWeek + 1;
        return firstDayOfYear.AddDays((week - (firstWeek + 1)) * 7 + dayOffSet + 1);
    }

我应该指出我的实施不是零基础。 (所以年份= 2011年,周= 27,日= 6)是2011年7月2日。