CalendarWeekRule Wyliczenie
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Definiuje różne reguły określania pierwszego tygodnia roku.
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
- Dziedziczenie
- Atrybuty
Pola
FirstDay | 0 | Wskazuje, że pierwszy tydzień roku rozpoczyna się w pierwszym dniu roku i kończy się przed następującym wyznaczonym pierwszym dniem tygodnia. Wartość to 0. |
FirstFourDayWeek | 2 | Wskazuje, że pierwszy tydzień roku to pierwszy tydzień z co najmniej czterema dniami przed wyznaczonym pierwszym dniem tygodnia. Wartość to 2. |
FirstFullWeek | 1 | Wskazuje, że pierwszy tydzień roku rozpoczyna się od pierwszego wystąpienia wyznaczonego pierwszego dnia tygodnia lub po pierwszym dniu roku. Wartość to 1. |
Uwagi
Element członkowski CalendarWeekRule wyliczenia jest zwracany przez DateTimeFormatInfo.CalendarWeekRule właściwość i jest używany przez bieżący kalendarz kultury w celu określenia reguły tygodnia kalendarzowego. Wartość wyliczenia jest również używana jako parametr Calendar.GetWeekOfYear metody .
Reguły tygodnia kalendarzowego zależą od System.DayOfWeek wartości, która wskazuje pierwszy dzień tygodnia oprócz CalendarWeekRule wartości. Właściwość DateTimeFormatInfo.FirstDayOfWeek udostępnia wartość domyślną kultury, ale dowolną DayOfWeek wartość można określić jako pierwszy dzień tygodnia w metodzie Calendar.GetWeekOfYear .
Pierwszy tydzień na FirstDay
podstawie wartości może mieć od jednego do siedmiu dni. Pierwszy tydzień na FirstFullWeek
podstawie wartości zawsze ma siedem dni. Pierwszy tydzień na FirstFourDayWeek
podstawie wartości może mieć od czterech do siedmiu dni.
Na przykład w kalendarzu gregoriańskim załóżmy, że pierwszy dzień roku (1 stycznia) przypada we wtorek, a wyznaczony pierwszy dzień tygodnia to niedziela. Wybranie FirstFullWeek
definiuje pierwszą niedzielę (6 stycznia) jako początek pierwszego tygodnia roku. Pierwsze pięć dni roku są uznawane za część ostatniego tygodnia poprzedniego roku. Natomiast wybranie FirstFourDayWeek
definiuje pierwszy dzień roku (1 stycznia) jako początek pierwszego tygodnia roku, ponieważ istnieje więcej niż cztery dni od 1 stycznia do dnia przed następującą niedzielą.
Date | Pierwszy dzień | FirstFullWeek | FirstFourDayWeek |
---|---|---|---|
31 grudnia | Ostatni tydzień poprzedniego roku | Ostatni tydzień poprzedniego roku | Ostatni tydzień poprzedniego roku |
1 stycznia | Tydzień 1 | Ostatni tydzień poprzedniego roku | Tydzień 1 |
2 stycznia | Tydzień 1 | Ostatni tydzień poprzedniego roku | Tydzień 1 |
3 stycznia thu | Tydzień 1 | Ostatni tydzień poprzedniego roku | Tydzień 1 |
4 stycznia pt. | Tydzień 1 | Ostatni tydzień poprzedniego roku | Tydzień 1 |
5 stycznia | Tydzień 1 | Ostatni tydzień poprzedniego roku | Tydzień 1 |
6 stycznia | Tydzień 2 | Tydzień 1 | Tydzień 2 |
7 stycznia | Tydzień 2 | Tydzień 1 | Tydzień 2 |
8 stycznia | Tydzień 2 | Tydzień 1 | Tydzień 2 |
9 stycznia | Tydzień 2 | Tydzień 1 | Tydzień 2 |
10 stycznia thu | Tydzień 2 | Tydzień 1 | Tydzień 2 |
11 stycznia pt. | Tydzień 2 | Tydzień 1 | Tydzień 2 |
12 stycznia | Tydzień 2 | Tydzień 1 | Tydzień 2 |
Załóżmy, że pierwszy dzień roku (1 stycznia) przypada w piątek, a wyznaczony pierwszy dzień tygodnia to niedziela. Wybranie FirstFourDayWeek
definiuje pierwszą niedzielę (3 stycznia) jako początek pierwszego tygodnia roku, ponieważ istnieje mniej niż cztery dni od 1 stycznia do dnia przed następującą niedzielą.
Date | Pierwszy dzień | FirstFullWeek | FirstFourDayWeek |
---|---|---|---|
31 grudnia thu | Ostatni tydzień poprzedniego roku | Ostatni tydzień poprzedniego roku | Ostatni tydzień poprzedniego roku |
1 stycznia pt. | Tydzień 1 | Ostatni tydzień poprzedniego roku | Ostatni tydzień poprzedniego roku |
2 stycznia sob | Tydzień 1 | Ostatni tydzień poprzedniego roku | Ostatni tydzień poprzedniego roku |
3 stycznia | Tydzień 2 | Tydzień 1 | Tydzień 1 |
4 stycznia | Tydzień 2 | Tydzień 1 | Tydzień 1 |
5 stycznia wt | Tydzień 2 | Tydzień 1 | Tydzień 1 |
6 stycznia Wed | Tydzień 2 | Tydzień 1 | Tydzień 1 |
7 stycznia czwartek | Tydzień 2 | Tydzień 1 | Tydzień 1 |
8 stycznia | Tydzień 2 | Tydzień 1 | Tydzień 1 |
9 stycznia sob | Tydzień 2 | Tydzień 1 | Tydzień 1 |
W poniższym przykładzie pokazano, jak wartości CalendarWeekRule i DayOfWeek są używane razem w celu określenia, jak tygodni są przypisywane. W kalendarzu gregoriańskim pierwszy dzień roku (1 stycznia) w 2013 r. przypada we wtorek. Jeśli wyznaczony pierwszy dzień tygodnia to niedziela, pierwsza niedziela (6 stycznia) jest pierwszym dniem pierwszego tygodnia roku, a sobota (5 stycznia) należy do pięćdziesiątego trzeciego tygodnia poprzedniego roku. Zmiana reguły tygodnia kalendarzowego na FirstFourDayWeek
zdefiniowanie wtorku (1 stycznia) jako początku pierwszego tygodnia roku, ponieważ od wtorku, 1 stycznia do niedzieli, 6 stycznia istnieje więcej niż cztery dni. Korzystając z tej reguły, 5 stycznia należy do pierwszego tygodnia roku. W 2010 r., rok, w którym 1 stycznia przypada w piątek, stosując FirstFourDayWeek
zasadę z DayOfWeek.Sunday jako pierwszy dzień tygodnia sprawia, że niedziela, 3 stycznia na początku pierwszego tygodnia roku, ponieważ pierwszy tydzień w 2010 r., który ma więcej niż cztery dni, to od 3 do 9 stycznia.
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
Uwaga
Nie jest to dokładnie mapowe na iso 8601. Różnice zostały omówione we wpisie w blogu w formacie ISO 8601 Week of Year na platformie Microsoft .NET. Począwszy od platformy .NET Core 3.0 i ISOWeek.GetYearISOWeek.GetWeekOfYear rozwiąż ten problem.
Każdy CultureInfo obiekt obsługuje zestaw kalendarzy. Właściwość Calendar zwraca domyślny kalendarz kultury, a OptionalCalendars właściwość zwraca tablicę zawierającą wszystkie kalendarze obsługiwane przez kulturę. Aby zmienić kalendarz używany przez element CultureInfo, ustaw Calendar właściwość CultureInfo.DateTimeFormat na nową Calendarwartość .