Рассчитать дату по номеру недели - PullRequest
122 голосов
/ 19 марта 2009

Каждый знает простой способ получить дату первого дня недели (понедельник здесь, в Европе). Я знаю год и номер недели? Я собираюсь сделать это в C #.

Ответы [ 23 ]

0 голосов
/ 09 августа 2012

Я использовал одно из решений, но оно дало неправильные результаты, просто потому, что оно считает воскресенье первым днем ​​недели.

Я изменил:

var firstDay = new DateTime(DateTime.Now.Year, 1, 1).AddDays((weekNumber - 1) * 7);
var lastDay = firstDay.AddDays(6);

до:

var lastDay = new DateTime(DateTime.Now.Year, 1, 1).AddDays((weekNumber) * 7);
var firstDay = lastDay.AddDays(-6);

и теперь он работает как заклинание.

0 голосов
/ 19 марта 2009

Неделя 1 определяется как неделя, которая начинается в понедельник и содержит первый четверг года.

0 голосов
/ 30 марта 2011

Я немного улучшил решение Томаса с помощью переопределения:

   public static DateTime FirstDateOfWeek(int year, int weekOfYear)
    {
      return Timer.FirstDateOfWeekOfMonth(year, 1, weekOfYear);
    }

    public static DateTime FirstDateOfWeekOfMonth(int year, int month, 
    int weekOfYear)
    {
      DateTime dtFirstDayOfMonth = new DateTime(year, month, 1);

       //I also commented out this part:
      /*
      if (firstWeek <= 1)
      {
        weekOfYear -= 1;
      }
      */

В противном случае дате предшествовала одна неделя ..

Спасибо, Томас, большая помощь.

...