2

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

结果应该是 2011-7-10


谢谢大家。我根据维基百科算法解决了它。

4

2 回答 2

2

这里没有 C# 代码(抱歉),但假设您在谈论 ISO 星期日期,您可以在Wikipedia中找到计算 ISO 星期日期的公历日期的通用算法。希望能帮助到你。

于 2011-07-12T14:40:23.763 回答
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);
    }

我应该指出我的实现不是基于零的。(所以 Year=2011,Week=27,day=6)是 2011 年 7 月 2 日。

于 2011-07-12T15:04:57.157 回答