반응형

한 주의 시작요일을 일요일로 했을 경우의 주차 정보 가져오기

Console.WriteLine("2015.01.01 주차는 " + GetWeekNumber(2015, 01, 01, DayOfWeek.Sunday));
Console.WriteLine("2015.02.01 주차는 " + GetWeekNumber(2015, 02, 01, DayOfWeek.Sunday));

 

한주의 시작요일을 월요일로 했을 경우의 주차 정보 가져오기
Console.WriteLine("2015.01.01 주차는 " + GetWeekNumber(2015, 01, 01, DayOfWeek.Monday));
Console.WriteLine("2015.02.01 주차는 " + GetWeekNumber(2015, 02, 01, DayOfWeek.Monday));

 

public static int GetWeekOfYear(DateTime sourceDate, CultureInfo cultureInfo, DayOfWeek dayOfWeek)
{
    if (cultureInfo == null)
    {
        cultureInfo = CultureInfo.CurrentCulture;
    }

    //해당 주의 첫째 요일 전까지 4일 이상이 있는 첫째 주가 해당 연도의 첫째 주가 되도록 지정
    CalendarWeekRule calendarWeekRule = CalendarWeekRule.FirstFourDayWeek;
    //주의 시작요일이 일요일 또는 월요일인지 확인. dayOfWeek가 일/월이 아닌 경우 월요일로 설정
    DayOfWeek firstDayOfWeek = cultureInfo.DateTimeFormat.FirstDayOfWeek;
    if (dayOfWeek == DayOfWeek.Sunday || dayOfWeek == DayOfWeek.Monday) 
    {
        firstDayOfWeek = dayOfWeek;
    } else firstDayOfWeek = DayOfWeek.Monday;
    
    int WeekOfYear = cultureInfo.Calendar.GetWeekOfYear(sourceDate, calendarWeekRule, firstDayOfWeek);

    return WeekOfYear;
}
반응형

+ Recent posts