Поделиться через


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 в Microsoft .NET. Начиная с .NET Core 3.0, ISOWeek.GetYear и ISOWeek.GetWeekOfYear решить эту проблему.

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

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

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