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 , может иметь от четырех до семи дней.

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

Date Первый день FirstFullWeek FirstFourDayWeek
31 декабря Пн Последняя неделя предыдущего года Последняя неделя предыдущего года Последняя неделя предыдущего года
1 января вт 1-я неделя Последняя неделя предыдущего года 1-я неделя
2 января Ср 1-я неделя Последняя неделя предыдущего года 1-я неделя
3 января чт 1-я неделя Последняя неделя предыдущего года 1-я неделя
4 января Пт 1-я неделя Последняя неделя предыдущего года 1-я неделя
5 января сб 1-я неделя Последняя неделя предыдущего года 1-я неделя
6 января вс 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 Первый день FirstFullWeek FirstFourDayWeek
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 января) относится к пятьдесят третьей неделе предыдущего года. Изменение правила календарной недели на 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 of Year в Майкрософт .NET. Начиная с .NET Core 3.0, ISOWeek.GetYear и ISOWeek.GetWeekOfYear решить эту проблему.

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

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

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