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

Указывает, что первой неделей года является первая неделя, состоящая из четырех или более дней, следующих перед назначенным первым днем недели. Значение равно 2.

FirstFullWeek 1

Указывает, что первая неделя года начинается с назначенного первого дня недели, который встречается первым в году. Значение равно 1.

Комментарии

Элемент CalendarWeekRule перечисления возвращается DateTimeFormatInfo.CalendarWeekRule свойством и используется текущим календарем языка и региональных параметров для определения правила календарной недели. Значение перечисления также используется в качестве параметра Calendar.GetWeekOfYear метода.

Правила календарной недели зависят от System.DayOfWeek значения, которое указывает первый день недели в дополнение к, в зависимости от CalendarWeekRule значения. DateTimeFormatInfo.FirstDayOfWeekСвойство предоставляет значение по умолчанию для языка и региональных параметров, но любое DayOfWeek значение может быть указано в качестве первого дня недели в Calendar.GetWeekOfYear методе.

Первая неделя, основанная на FirstDay значении, может сосуществовать от одного до семи дней. Первая неделя, основанная на FirstFullWeek значении, всегда имеет семь дней. Первая неделя, основанная на FirstFourDayWeek значении, может включать от 4 до семи дней.

Например, в григорианском календаре Предположим, что первый день года (1 января) приходится на вторник, а назначенный первый день недели — воскресенье. Выбор FirstFullWeek определяет первое воскресенье (6 января) как начало первой недели года. Первые пять дней года считаются частью последней недели предыдущего года. В отличие от этого, выбор FirstFourDayWeek определяет первый день года (1 января) как начало первой недели года, так как число дней от 1 января до следующего воскресенья равно более чем через четыре дня.

Date фирстдай фирстфуллвик фирстфаурдайвик
31 декабря, понедельник Последняя неделя предыдущего года Последняя неделя предыдущего года Последняя неделя предыдущего года
1 января, вторник 1-я неделя Последняя неделя предыдущего года 1-я неделя
2 января, среда 1-я неделя Последняя неделя предыдущего года 1-я неделя
3 января, четверг 1-я неделя Последняя неделя предыдущего года 1-я неделя
4 января, пятница 1-я неделя Последняя неделя предыдущего года 1-я неделя
5 января, сб 1-я неделя Последняя неделя предыдущего года 1-я неделя
6 января, Sun 2-я неделя 1-я неделя 2-я неделя
7 января, мес. 2-я неделя 1-я неделя 2-я неделя
8 января, вторник 2-я неделя 1-я неделя 2-я неделя
9 января, среда 2-я неделя 1-я неделя 2-я неделя
10 января, четверг 2-я неделя 1-я неделя 2-я неделя
11 января, пятница 2-я неделя 1-я неделя 2-я неделя
12 января, Кот 2-я неделя 1-я неделя 2-я неделя

Предположим, первый день года (1 января) приходится на пятницу, а назначенный первый день недели — воскресенье. Выбор FirstFourDayWeek определяет первое воскресенье (3 января) как начало первой недели года, так как число дней от 1 января до следующего воскресенья меньше четырех.

Date фирстдай фирстфуллвик фирстфаурдайвик
31 декабря, четверг Последняя неделя предыдущего года Последняя неделя предыдущего года Последняя неделя предыдущего года
1 января, пятница 1-я неделя Последняя неделя предыдущего года Последняя неделя предыдущего года
2 января, Кот. 1-я неделя Последняя неделя предыдущего года Последняя неделя предыдущего года
3 января, воскресенье 2-я неделя 1-я неделя 1-я неделя
4 января, мес. 2-я неделя 1-я неделя 1-я неделя
5 января, вторник 2-я неделя 1-я неделя 1-я неделя
6 января, среда 2-я неделя 1-я неделя 1-я неделя
7 января, четверг 2-я неделя 1-я неделя 1-я неделя
8 января, пятница 2-я неделя 1-я неделя 1-я неделя
9 января, сб 2-я неделя 1-я неделя 1-я неделя

В следующем примере показано, как CalendarWeekRule DayOfWeek используются значения и для определения способа назначения недель. В григорианском календаре первый день года (1 января) в 2013 попадает в вторник. Если назначенный первый день недели — воскресенье, первое воскресенье (6 января) является первым днем первой недели года, а суббота (5 января) относится к 51-третьей неделе предыдущего года. Изменение правила календарной недели для FirstFourDayWeek определения вторника (1 января) в качестве начала первой недели года, так как между вторника, 1 января и воскресенье 6 января есть более четырех дней. С помощью этого правила 5 января относятся к первой неделе года. Для 2010, год, в котором 1 января попадает в пятницу, применение FirstFourDayWeek правила с в DayOfWeek.Sunday качестве первого дня недели делает воскресенье, 3 января в начале первой недели года, поскольку первая неделя в 2010, которая содержит более четырех дней, — от 3 до 9.

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. Различия описаны в записи блога в формате ISO 8601 Week года в Microsoft .NET. Начиная с .NET Core 3,0 ISOWeek.GetYear и ISOWeek.GetWeekOfYear решаем эту проблему.

Каждый CultureInfo объект поддерживает набор календарей. CalendarСвойство возвращает календарь по умолчанию для языка и региональных параметров, а OptionalCalendars свойство возвращает массив, содержащий все календари, поддерживаемые культурой. Чтобы изменить календарь CultureInfo , используемый, присвойте Calendar свойству значение CultureInfo.DateTimeFormat New Calendar .

Применяется к

См. также раздел