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


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.

FirstFullWeek 1

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

FirstFourDayWeek 2

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

Комментарии

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

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

Первая неделя на FirstDay основе значения может иметь от 1 до семи дней. Первая неделя на FirstFullWeek основе значения всегда имеет семь дней. Первая неделя на FirstFourDayWeek основе значения может иметь четыре–семь дней.

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

Дата FirstDay FirstFullWeek FirstFourDayWeek
Декабрь 31 Mon Последняя неделя предыдущего года Последняя неделя предыдущего года Последняя неделя предыдущего года
Январь 1 Tue Неделя 1 Последняя неделя предыдущего года Неделя 1
2 января Wed Неделя 1 Последняя неделя предыдущего года Неделя 1
3 Ян 3 Чт Неделя 1 Последняя неделя предыдущего года Неделя 1
4 января Неделя 1 Последняя неделя предыдущего года Неделя 1
5 января с Неделя 1 Последняя неделя предыдущего года Неделя 1
6 января вс. Неделя 2 Неделя 1 Неделя 2
7 января Неделя 2 Неделя 1 Неделя 2
8 января Tue Неделя 2 Неделя 1 Неделя 2
9 января Ср Неделя 2 Неделя 1 Неделя 2
10 января Неделя 2 Неделя 1 Неделя 2
11 января Неделя 2 Неделя 1 Неделя 2
12 января с Неделя 2 Неделя 1 Неделя 2

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

Дата FirstDay FirstFullWeek FirstFourDayWeek
31 декабря Последняя неделя предыдущего года Последняя неделя предыдущего года Последняя неделя предыдущего года
1 января 200 г. Неделя 1 Последняя неделя предыдущего года Последняя неделя предыдущего года
2 января с Неделя 1 Последняя неделя предыдущего года Последняя неделя предыдущего года
3 января вс. Неделя 2 Неделя 1 Неделя 1
4 января Неделя 2 Неделя 1 Неделя 1
Январь 5 Tue Неделя 2 Неделя 1 Неделя 1
6 января Wed Неделя 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 Неделя года в Microsoft .NET. Начиная с .NET Core 3.0 и ISOWeek.GetYearISOWeek.GetWeekOfYear решить эту проблему.

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

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

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