Необходимо рассчитать дату на основе года - недели - дня

Как я могу рассчитать дату в C#, когда я получаю год, номер недели и день в неделю. Например: год = неделя 2011 года = 27 дней = 6

результат должен быть 2011-7-10


Спасибо всем. Я решил это на основе алгоритма Википедии.

2 ответа

Здесь нет кода C# (извините), но, предполагая, что вы говорите о дате недели ISO, вы можете найти общий алгоритм, который вычисляет григорианскую дату даты недели ISO в Википедии. Надеюсь, поможет.

Это должно работать:

 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) - 2 июля 2011 года.

Другие вопросы по тегам