CalendarWeekRule Výčet
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Definuje různá pravidla pro určení prvního týdne v roce.
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
- Dědičnost
- Atributy
Pole
FirstDay | 0 | Označuje, že první týden roku začíná prvním dnem v roce a končí před následujícím určeným prvním dnem v týdnu. Hodnota je 0. |
FirstFourDayWeek | 2 | Označuje, že první týden v roce je první týden se čtyřmi nebo více dny před určeným prvním dnem v týdnu. Hodnota je 2. |
FirstFullWeek | 1 | Označuje, že první týden v roce začíná prvním výskytem určeného prvního dne v týdnu prvního dne v roce nebo později. Hodnota je 1. |
Poznámky
Člen výčtu CalendarWeekRule je vrácen DateTimeFormatInfo.CalendarWeekRule vlastností a je používán aktuálním kalendářem jazykové verze k určení pravidla kalendářního týdne. Hodnota výčtu se také používá jako parametr Calendar.GetWeekOfYear metody.
Pravidla kalendářního týdne závisí na hodnotě System.DayOfWeek , která kromě hodnoty označuje první den v týdnu CalendarWeekRule . Vlastnost DateTimeFormatInfo.FirstDayOfWeek poskytuje výchozí hodnotu pro jazykovou verzi, ale libovolnou DayOfWeek hodnotu lze v metodě zadat jako první den v týdnu Calendar.GetWeekOfYear .
První týden založený na hodnotě FirstDay
může mít jeden až sedm dnů. První týden založený na hodnotě FirstFullWeek
má vždy sedm dní. První týden založený na hodnotě FirstFourDayWeek
může mít čtyři až sedm dní.
Například v gregoriánském kalendáři předpokládejme, že první den v roce (1. leden) připadá na úterý a určený první den v týdnu je neděle. Výběrem FirstFullWeek
definujete první neděli (6. ledna) jako začátek prvního týdne v roce. Prvních pět dnů v roce se považuje za součást posledního týdne předchozího roku. Výběr naopak FirstFourDayWeek
definuje první den v roce (1. ledna) jako začátek prvního týdne roku, protože od 1. ledna do dne předcházejícího následující neděli jsou více než čtyři dny.
Datum | První den | FirstFullWeek | FirstFourDayWeek |
---|---|---|---|
Prosinec 31 Po | Poslední týden předchozího roku | Poslední týden předchozího roku | Poslední týden předchozího roku |
Út 1. ledna | Týden 1 | Poslední týden předchozího roku | Týden 1 |
2. ledna – wed | Týden 1 | Poslední týden předchozího roku | Týden 1 |
3. ledna čt | Týden 1 | Poslední týden předchozího roku | Týden 1 |
Pá 4. ledna | Týden 1 | Poslední týden předchozího roku | Týden 1 |
So 5. ledna | Týden 1 | Poslední týden předchozího roku | Týden 1 |
6. ledna – ne | Týden 2 | Týden 1 | Týden 2 |
7. ledna Po | Týden 2 | Týden 1 | Týden 2 |
Út 8. ledna | Týden 2 | Týden 1 | Týden 2 |
9. ledna – Wed | Týden 2 | Týden 1 | Týden 2 |
10. ledna čt | Týden 2 | Týden 1 | Týden 2 |
11. ledna pá | Týden 2 | Týden 1 | Týden 2 |
So 12. ledna | Týden 2 | Týden 1 | Týden 2 |
Předpokládejme, že první den v roce (1. leden) spadá na pátek a určený první den v týdnu je neděle. Výběrem FirstFourDayWeek
definujete první neděli (3. ledna) jako začátek prvního týdne v roce, protože od 1. ledna do dne předcházejícího následující neděli jsou méně než čtyři dny.
Datum | První den | FirstFullWeek | FirstFourDayWeek |
---|---|---|---|
Prosinec 31 Čt | Poslední týden předchozího roku | Poslední týden předchozího roku | Poslední týden předchozího roku |
1. ledna pá | 1. týden | Poslední týden předchozího roku | Poslední týden předchozího roku |
So 2. ledna | 1. týden | Poslední týden předchozího roku | Poslední týden předchozího roku |
Jan 3 Ne | 2. týden | 1. týden | 1. týden |
4. ledna po | 2. týden | 1. týden | 1. týden |
5. ledna Út | 2. týden | 1. týden | 1. týden |
Jan 6 Wed | 2. týden | 1. týden | 1. týden |
Jan 7 Čt | 2. týden | 1. týden | 1. týden |
8. ledna Pá | 2. týden | 1. týden | 1. týden |
So 9. ledna | 2. týden | 1. týden | 1. týden |
Následující příklad ukazuje, jak CalendarWeekRule se hodnoty a DayOfWeek používají společně k určení způsobu přiřazení týdnů. V gregoriánském kalendáři spadá první den roku (1. ledna) v roce 2013 na úterý. Pokud je prvním dnem týdne neděle, je první neděle (6. ledna) prvním dnem prvního týdne v roce a sobota (5. ledna) patří padesátému třetímu týdnu předchozího roku. Změna pravidla kalendářního týdne na FirstFourDayWeek
definuje úterý (1. ledna) jako začátek prvního týdne roku, protože mezi úterým 1. lednem a neděli 6. ledna jsou více než čtyři dny. Pokud použijete toto pravidlo, 5. leden patří prvnímu týdnu v roce. V roce 2010, ve kterém 1. leden spadá do pátku, FirstFourDayWeek
platí pravidlo s DayOfWeek.Sunday prvním dnem týdne tak, že neděle, leden 3 začátek prvního týdne roku, protože první týden v roce 2010, který má více než čtyři dny, je 3. až 9. ledna.
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
Poznámka
Nemapuje se přesně na ISO 8601. Rozdíly jsou popsány v položce blogu ISO 8601 Týden roku formát v Microsoft .NET. Začněte s .NET Core 3.0 a ISOWeek.GetWeekOfYear tento problém vyřešteISOWeek.GetYear.
Každý CultureInfo objekt podporuje sadu kalendářů. Vlastnost Calendar vrátí výchozí kalendář pro jazykovou verzi a OptionalCalendars vlastnost vrátí pole obsahující všechny kalendáře podporované jazykovou verzí. Pokud chcete změnit kalendář používaný objektem CultureInfo, nastavte Calendar vlastnost CultureInfo.DateTimeFormat na nový Calendar.