CalendarWeekRule Enumeration

CalendarWeekRule Enumeration

[ This article is for Windows Phone 8 developers. If you’re developing for Windows 10, see the latest documentation. ]

Defines different rules for determining the first week of the year.

Namespace:  System.Globalization
Assembly:  mscorlib (in mscorlib.dll)

public enum CalendarWeekRule

Member nameDescription
FirstDayIndicates that the first week of the year starts on the first day of the year and ends before the following designated first day of the week. The value is 0.
FirstFourDayWeekIndicates that the first week of the year is the first week with four or more days before the designated first day of the week. The value is 2.
FirstFullWeekIndicates that the first week of the year begins on the first occurrence of the designated first day of the week on or after the first day of the year. The value is 1.

A member of the CalendarWeekRule enumeration is returned by the DateTimeFormatInfo.CalendarWeekRule property and is used by the culture's current calendar to determine the calendar week rule. The enum value is also used as a parameter to the Calendar.GetWeekOfYear method.

The CalendarWeekRule enumeration provides three different rules to define the first week of the year. This in turn determines which week of the year a particular date occurs in or which week of the year a particular week is. The default calendar week rule for a particular culture is defined by its DateTimeFormatInfo.CalendarWeekRule property, but any CalendarWeekRule value can be specified in the call to the Calendar.GetWeekOfYear method.

The first week based on the CalendarWeekRule.FirstDay calendar week rule can have one to seven days. The first week based on the CalendarWeekRule.FirstFullWeek calendar week rule always has seven days. The first week based on the CalendarWeekRule.FirstFourDayWeek calendar week rule can have four to seven days.

For example, in the Gregorian calendar, suppose that the first day of the year (January 1) falls on a Tuesday and the designated first day of the week is Sunday. Selecting FirstFullWeek defines the first Sunday (January 6) as the beginning of the first week of the year. The first five days of the year are considered part of the last week of the previous year. In contrast, selecting FirstFourDayWeek defines the first day of the year (January 1) as the beginning of the first week of the year because there are more than four days from January 1 to the day before the following Sunday. Similarly, the FirstDay rule also defines the first day of the year (January 1) as the beginning of the first week of the year. The following table illustrates how each rule affects the date range of the last week of the previous year and the first week of the current year

Date

FirstDay

FirstFullWeek

FirstFourDayWeek

Dec 31 Mon

Last week of the previous year

Last week of the previous year

Last week of the previous year

Jan 1 Tue

Week 1

Last week of the previous year

Week 1

Jan 2 Wed

Week 1

Last week of the previous year

Week 1

Jan 3 Thu

Week 1

Last week of the previous year

Week 1

Jan 4 Fri

Week 1

Last week of the previous year

Week 1

Jan 5 Sat

Week 1

Last week of the previous year

Week 1

Jan 6 Sun

Week 2

Week 1

Week 2

Jan 7 Mon

Week 2

Week 1

Week 2

Jan 8 Tue

Week 2

Week 1

Week 2

Jan 9 Wed

Week 2

Week 1

Week 2

Jan 10 Thu

Week 2

Week 1

Week 2

Jan 11 Fri

Week 2

Week 1

Week 2

Jan 12 Sat

Week 2

Week 1

Week 2

Suppose the first day of the year (January 1) falls on a Friday and the designated first day of the week is Sunday. Selecting FirstFourDayWeek defines the first Sunday (January 3) as the beginning of the first week of the year because there are fewer than four days from January 1 to the day before the following Sunday. The folllowing table shows the date range of the first week of the year for a year that begins on a Friday when the first day of the week is a Sunday.

Date

FirstDay

FirstFullWeek

FirstFourDayWeek

Dec 31 Thu

Last week of the previous year

Last week of the previous year

Last week of the previous year

Jan 1 Fri

Week 1

Last week of the previous year

Last week of the previous year

Jan 2 Sat

Week 1

Last week of the previous year

Last week of the previous year

Jan 3 Sun

Week 2

Week 1

Week 1

Jan 4 Mon

Week 2

Week 1

Week 1

Jan 5 Tue

Week 2

Week 1

Week 1

Jan 6 Wed

Week 2

Week 1

Week 1

Jan 7 Thu

Week 2

Week 1

Week 1

Jan 8 Fri

Week 2

Week 1

Week 1

Jan 9 Sat

Week 2

Week 1

Week 1

The following example illustrates how the CalendarWeekRule and System.DayOfWeek values are used together to determine how weeks are assigned. In the Gregorian calendar, the first day of the year (January 1) in 2013 falls on a Tuesday. If the designated first day of the week is Sunday, the first Sunday (January 6) is the first day of the first week of the year, and Saturday (January 5) belongs to the fifty-third week of the previous year. Changing the calendar week rule to CalendarWeekRule.FirstFourDayWeek defines Tuesday (January 1) as the beginning of the first week of the year, because there are more than four days between Tuesday, January 1, and Sunday, January 6. Using this rule, January 5 belongs to the first week of the year. For 2010, a year in which January 1 falls on a Friday, applying the CalendarWeekRule.FirstFourDayWeek rule with DayOfWeek.Sunday as the first day of the week makes Sunday, January 3 the beginning of the first week of the year, because the first week in 2010 that has more than four days is January 3 through 9.


using System;
using System.Globalization;

public class Example
{
   private static System.Windows.Controls.TextBlock outputBlock;

   static Calendar cal = new GregorianCalendar();

   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      Example.outputBlock = outputBlock;

      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);

      outputBlock.Text += Environment.NewLine;
      date = new DateTime(2010, 1, 3);
      ShowWeekNumber(date, rule, firstDay);
   }

   private static void ShowWeekNumber(DateTime dat, CalendarWeekRule rule, 
                                      DayOfWeek firstDay)
   {                                   
      outputBlock.Text += String.Format("{0:d} with {1:F} rule and {2:F} as first day of week: week {3}",
                        dat, rule, firstDay, cal.GetWeekOfYear(dat, rule, firstDay)) + Environment.NewLine;
   }   
}
// 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


NoteNote:

This does not map exactly to ISO 8601. The differences are discussed in the blog entry ISO 8601 Week of Year format in Microsoft .Net.

Each CultureInfo object supports a set of calendars. The Calendar property returns the default calendar for the culture, and the OptionalCalendars property returns an array containing all the calendars supported by the culture. To change the calendar used by a CultureInfo object, the application should set the Calendar property of CultureInfo.DateTimeFormat to a new Calendar object that is a member of the OptionalCalendars array.

Windows Phone OS

Supported in: 8.1, 8.0, 7.1, 7.0

Windows Phone

Show:
© 2016 Microsoft