Необходимо рассчитать дату на основе года - недели - дня - PullRequest
2 голосов
/ 12 июля 2011

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

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


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

Ответы [ 2 ]

2 голосов
/ 12 июля 2011

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

 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 года.

2 голосов
/ 12 июля 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...