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
- Наследование
- Атрибуты
Поля
| Имя | Значение | Описание |
|---|---|---|
| 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.