Вземете седмица от избраната месечна календарна дата

Имам нужда от решение за изчисляване на седмицата от избраната дата. (в месечен календар)
Опитах:

DateTime dt1 = new DateTime(monthCalendar1.SelectionStart.Year, 
                            monthCalendar1.SelectionStart.Month, 
                            monthCalendar1.SelectionStart.Day);

DateTime dt2 = new DateTime(monthCalendar1.SelectionStart.Year, 
                            1, 
                            1);

System.TimeSpan varTime = dt1 - dt2;
int weeks = (varTime.Days / 7) + 1;

Но началните и крайните дни на седмицата не са правилни и в някои години имах 53 седмици?
кой е най-добрият начин да се реши това?


person MrMAG    schedule 02.08.2012    source източник
comment
Някои години имат 53 седмици, това не е грешка, която е проектирана   -  person Henrik Stenbæk    schedule 02.08.2012


Отговори (2)


public int WeekNumber(DateTime date)
{
    CultureInfo ciCurr = CultureInfo.CurrentCulture;
    int weekNum = ciCurr.Calendar.GetWeekOfYear(date,
                                          CalendarWeekRule.FirstFourDayWeek,
                                          DayOfWeek.Monday);
    return weekNum;
}

Не забравяйте да коригирате CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday към вашата текуща култура, единствената употреба тук е за danish/denmark

person Henrik Stenbæk    schedule 02.08.2012

Опитайте функцията GetWeekOfYear на календара. погледнете тук и превъртете надолу за пълен пример: http://msdn.microsoft.com/en-us/library/system.globalization.calendar.getweekofyear.aspx

person Occidio    schedule 02.08.2012
comment
Някой е публикувал решението и го изтрийте отново. Както и да е, бих могъл да грабна изрязаното. Благодаря неизвестен :) - person MrMAG; 02.08.2012
comment
@user1559441: Отново изтрих отговора си - току-що разбрах, че всъщност не отговорих на всичките ви въпроси :-) - person Henrik Stenbæk; 02.08.2012