Рассчитать StartDate, используя FirstDayOfWeek и FirstWeekOfYear - PullRequest
0 голосов
/ 15 ноября 2011

Мой стартовый год - 2009, FirstDayOfWeek - понедельник, FirstWeekOfYear - первая полная неделя.

Таким образом, согласно вышеуказанным критериям в календаре 2009 года, 1-я неделя фактически начинается с 5-й.Итак, как мне получить StartDate года, используя вышеуказанные условия (FirstDayOfWeek и FirstWeekOfYear (правило календаря))?Это должно быть универсальным.

1 Ответ

0 голосов
/ 15 ноября 2011

Обновил код еще раз.

public DateTime GetFirstDayOfFirstWeek(int year, CultureInfo culture)
{
    // calc first date of this week
    var firstDateOfWeek = new DateTime(year, 1, 10);
    while (firstDateOfWeek.DayOfWeek != culture.DateTimeFormat.FirstDayOfWeek)
        firstDateOfWeek = firstDateOfWeek.AddDays(-1);

    // get current week number
    int weekNum = culture.Calendar.GetWeekOfYear(firstDateOfWeek, culture.DateTimeFormat.CalendarWeekRule, culture.DateTimeFormat.FirstDayOfWeek);

    // remove all weeks except the first one
    return firstDateOfWeek.AddDays(7 - (weekNum * 7));
}

var date = GetFirstDayOfFirstWeek(2009, new CultureInfo("sv-se"));

Примечание к коду: Я все еще использую CultureInfo и не принимаю правила в качестве аргументов.Делая это, я делаю вам одолжение :) Вы должны научиться использовать встроенные функции культуры в .NET.Это поможет вам сэкономить много времени.

(если вы все еще не хотите использовать культуру, просто измените код)

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