다음을 통해 공유


CalendarWeekRule 열거형

정의

해당 연도의 첫째 주를 확인하기 위한 다양한 규칙을 정의합니다.

public enum class CalendarWeekRule
public enum CalendarWeekRule
[System.Serializable]
public enum CalendarWeekRule
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public enum CalendarWeekRule
type CalendarWeekRule = 
[<System.Serializable>]
type CalendarWeekRule = 
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type CalendarWeekRule = 
Public Enum CalendarWeekRule
상속
CalendarWeekRule
특성

필드

FirstDay 0

해당 연도의 첫째 주가 해당 연도의 첫 날에 시작해서 다음 주의 첫째 요일 전에 끝나도록 지정합니다. 값은 0입니다.

FirstFourDayWeek 2

해당 주의 첫째 요일 전까지 4일 이상이 있는 첫째 주가 해당 연도의 첫째 주가 되도록 지정합니다. 값은 2입니다.

FirstFullWeek 1

해당 연도의 첫째 주를 해당 연도의 첫 날이나 다음 날이 있는 주의 첫째 요일에서 시작되도록 지정합니다. 값은 1입니다.

설명

열거형의 CalendarWeekRule 멤버는 속성에서 DateTimeFormatInfo.CalendarWeekRule 반환되며 문화권의 현재 달력에서 달력 주 규칙을 결정하는 데 사용됩니다. 열거형 값은 메서드에 대한 매개 변수 Calendar.GetWeekOfYear 로도 사용됩니다.

달력 주 규칙은 값에 System.DayOfWeek 따라 요일 외에 요일을 나타내는 값에 CalendarWeekRule 따라 달라집니다. 속성은 DateTimeFormatInfo.FirstDayOfWeek 문화권의 기본값을 제공하지만 모든 DayOfWeek 값은 메서드에서 요 Calendar.GetWeekOfYear 일의 첫째 날로 지정할 수 있습니다.

값을 기반으로 하는 FirstDay 첫 주에는 1~7일이 있을 수 있습니다. 값을 기반으로 하는 FirstFullWeek 첫 주에는 항상 7일이 있습니다. 값을 기반으로 하는 FirstFourDayWeek 첫 주에는 4~7일이 있을 수 있습니다.

예를 들어 그레고리오력에서 연중 첫 날(1월 1일)은 화요일에, 지정된 요일은 일요일이라고 가정합니다. FirstFullWeek 를 선택하면 첫 번째 일요일(1월 6일)이 연중 첫 번째 주의 시작으로 정의됩니다. 연도의 처음 5일은 전년도 마지막 주의 일부로 간주됩니다. 반면, 을 FirstFourDayWeek 선택하면 1월 1일부터 다음 일요일까지 4일이 초과되기 때문에 연중 첫 번째 날(1월 1일)을 연중 첫 번째 주의 시작으로 정의합니다.

날짜 FirstDay FirstFullWeek FirstFourDayWeek
12월 31일(월) 전년도의 마지막 주 전년도의 마지막 주 전년도의 마지막 주
1월 1일 화요일 1주차 전년도의 마지막 주 1주차
1월 2일(수) 1주차 전년도의 마지막 주 1주차
1월 3일(목) 1주차 전년도의 마지막 주 1주차
1월 4일(금) 1주차 전년도의 마지막 주 1주차
1월 5일(토) 1주차 전년도의 마지막 주 1주차
1월 6일(일) 2주차 1주차 2주차
1월 7일(월) 2주차 1주차 2주차
1월 8일 화요일 2주차 1주차 2주차
1월 9일(수) 2주차 1주차 2주차
1월 10일(목) 2주차 1주차 2주차
1월 11일(금) 2주차 1주차 2주차
1월 12일(토) 2주차 1주차 2주차

연중 첫 날(1월 1일)이 금요일이고 지정된 요일이 일요일이라고 가정합니다. 1 FirstFourDayWeek 월 1일부터 다음 일요일까지 4일 미만이 있기 때문에 첫 번째 일요일(1월 3일)을 연중 첫 번째 주의 시작으로 정의합니다.

날짜 FirstDay FirstFullWeek FirstFourDayWeek
12월 31일 목요일 전년도의 마지막 주 전년도의 마지막 주 전년도의 마지막 주
1월 1일(금) 1주차 전년도의 마지막 주 전년도의 마지막 주
1월 2일(토) 1주차 전년도의 마지막 주 전년도의 마지막 주
1월 3일(일) 2주차 1주차 1주차
1월 4일(월) 2주차 1주차 1주차
1월 5일 화요일 2주차 1주차 1주차
1월 6일(수) 2주차 1주차 1주차
1월 7일(목) 2주차 1주차 1주차
1월 8일(금) 2주차 1주차 1주차
1월 9일(토) 2주차 1주차 1주차

다음 예제에서는 주 할당 방법을 결정 하기 위해 및 DayOfWeek 값을 함께 사용 하는 방법을 CalendarWeekRule 보여 줍니다. 그레고리오력에서는 2013년 연중 첫 날(1월 1일)이 화요일에 있습니다. 지정된 요일이 일요일인 경우 첫 번째 일요일(1월 6일)은 연중 첫 번째 주의 첫 번째 날이며 토요일(1월 5일)은 전년도의 53번째 주에 속합니다. 1월 1일 화요일과 1월 6일 일요일 사이에 4일이 넘게 있기 때문에 달력 주 규칙을 FirstFourDayWeek 변경하면 화요일(1월 1일)이 연초의 시작으로 정의됩니다. 이 규칙을 사용하면 1월 5일은 연중 첫 주에 속합니다. 2010년, 1월 1일이 금요일에 적용되는 연도의 경우 요일의 첫 날인 규칙을 DayOfWeek.Sunday 적용하면 FirstFourDayWeek 2010년 첫 주가 1월 3일부터 9일까지이기 때문에 1월 3일 일요일은 연중 첫 번째 주가 시작됩니다.

using System;
using System.Globalization;

public class Example
{
   static Calendar cal = new GregorianCalendar();

   public static void Main()
   {
      DateTime date = new DateTime(2013, 1, 5);
      DayOfWeek firstDay = DayOfWeek.Sunday;
      CalendarWeekRule rule;

      rule = CalendarWeekRule.FirstFullWeek;
      ShowWeekNumber(date, rule, firstDay);

      rule = CalendarWeekRule.FirstFourDayWeek;
      ShowWeekNumber(date, rule, firstDay);

      Console.WriteLine();
      date = new DateTime(2010, 1, 3);
      ShowWeekNumber(date, rule, firstDay);
   }

   private static void ShowWeekNumber(DateTime dat, CalendarWeekRule rule,
                                      DayOfWeek firstDay)
   {
      Console.WriteLine("{0:d} with {1:F} rule and {2:F} as first day of week: week {3}",
                        dat, rule, firstDay, cal.GetWeekOfYear(dat, rule, firstDay));
   }
}
// The example displays the following output:
//       1/5/2013 with FirstFullWeek rule and Sunday as first day of week: week 53
//       1/5/2013 with FirstFourDayWeek rule and Sunday as first day of week: week 1
//
//       1/3/2010 with FirstFourDayWeek rule and Sunday as first day of week: week 1
Imports System.Globalization

Module Example
   
   Dim cal As New GregorianCalendar()
   
   Public Sub Main()
      Dim dat As Date = #01/05/2013#
      Dim firstDay As DayOfWeek = DayOfWeek.Sunday
      Dim rule As CalendarWeekRule
      
      rule = CalendarWeekRule.FirstFullWeek
      ShowWeekNumber(dat, rule, firstDay)
      
      rule = CalendarWeekRule.FirstFourDayWeek
      ShowWeekNumber(dat, rule, firstDay)

      Console.WriteLine()
      dat = #1/03/2010#
      ShowWeekNumber(dat, rule, firstDay)
   End Sub
   
   Private Sub ShowWeekNumber(dat As Date, rule As CalendarWeekRule, 
                              firstDay As DayOfWeek)
      Console.WriteLine("{0:d} with {1:F} rule and {2:F} as first day of week: week {3}",
                        dat, rule, firstDay, cal.GetWeekOfYear(dat, rule, firstDay))
   End Sub   
End Module
' The example displays the following output:
'       1/5/2013 with FirstFullWeek rule and Sunday as first day of week: week 53
'       1/5/2013 with FirstFourDayWeek rule and Sunday as first day of week: week 1
'       
'       1/3/2010 with FirstFourDayWeek rule and Sunday as first day of week: week 1

참고

ISO 8601에 정확히 매핑되지 않습니다. 차이점은 Microsoft .NET의 블로그 항목 ISO 8601 Week of Year 형식에 설명되어 있습니다. .NET Core 3.0 ISOWeek.GetYearISOWeek.GetWeekOfYear 부터 이 문제를 해결합니다.

CultureInfo 개체는 일정 집합을 지원합니다. 속성은 Calendar 문화권의 기본 달력을 반환하고 속성은 OptionalCalendars 문화권에서 지원하는 모든 달력을 포함하는 배열을 반환합니다. 에서 사용하는 CultureInfo일정을 변경하려면 의 CalendarCultureInfo.DateTimeFormat 속성을 새 Calendar로 설정합니다.

적용 대상

추가 정보