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
| Name | Hodnota | Description |
|---|---|---|
| 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. |
| FirstFullWeek | 1 | Označuje, že první týden roku začíná prvním výskytem určeného prvního dne v týdnu nebo po prvním dni roku. Hodnota je 1. |
| 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. |
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 týdne kalendáře. Hodnota výčtu se také používá jako parametr metody Calendar.GetWeekOfYear .
Pravidla kalendářního týdne závisí na System.DayOfWeek hodnotě, která označuje první den v týdnu kromě hodnoty CalendarWeekRule . Vlastnost DateTimeFormatInfo.FirstDayOfWeek poskytuje výchozí hodnotu pro jazykovou verzi, ale jakoukoli DayOfWeek hodnotu lze zadat jako první den v týdnu Calendar.GetWeekOfYear v metodě.
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ů.
Předpokládejme například, že první den roku (1. ledna) spadá do úterý a určený první den v týdnu je neděle. Výběr FirstFullWeek definuje 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. Naproti tomu výběr FirstFourDayWeek definuje první den roku (1. ledna) jako začátek prvního týdne v roce, protože od 1. ledna do dne před následující neděli existuje více než čtyři dny.
| Date | První den | FirstFullWeek | FirstFourDayWeek |
|---|---|---|---|
| Prosinec 31 Mon | Minulý týden předchozího roku | Minulý týden předchozího roku | Minulý týden předchozího roku |
| 1. ledna – út | Týden 1 | Minulý týden předchozího roku | Týden 1 |
| Jan 2 Wed | Týden 1 | Minulý týden předchozího roku | Týden 1 |
| Jan 3 Čt | Týden 1 | Minulý týden předchozího roku | Týden 1 |
| Pá 4. ledna | Týden 1 | Minulý týden předchozího roku | Týden 1 |
| 5. ledna | Týden 1 | Minulý týden předchozího roku | Týden 1 |
| Jan 6 Ne | Týden 2 | Týden 1 | Týden 2 |
| 7. ledna | Týden 2 | Týden 1 | Týden 2 |
| 8. ledna – út | Týden 2 | Týden 1 | Týden 2 |
| 9. ledna – 19. | Týden 2 | Týden 1 | Týden 2 |
| Čt. ledna 10 | Týden 2 | Týden 1 | Týden 2 |
| Pá 11. ledna | Týden 2 | Týden 1 | Týden 2 |
| 12. ledna | Týden 2 | Týden 1 | Týden 2 |
Předpokládejme, že první den roku (1. ledna) spadá do pátku a určený první den v týdnu je neděle. Výběr FirstFourDayWeek definuje první neděli (3. ledna) jako začátek prvního týdne v roce, protože od 1. ledna do dne před následující neděli je méně než čtyři dny.
| Date | První den | FirstFullWeek | FirstFourDayWeek |
|---|---|---|---|
| Prosinec 31 Čt | Minulý týden předchozího roku | Minulý týden předchozího roku | Minulý týden předchozího roku |
| Pá 1. ledna | Týden 1 | Minulý týden předchozího roku | Minulý týden předchozího roku |
| 2. ledna | Týden 1 | Minulý týden předchozího roku | Minulý týden předchozího roku |
| Jan 3 Ne | Týden 2 | Týden 1 | Týden 1 |
| 4. ledna | Týden 2 | Týden 1 | Týden 1 |
| 5. ledna – út | Týden 2 | Týden 1 | Týden 1 |
| 1. ledna 2018 | Týden 2 | Týden 1 | Týden 1 |
| Jan 7 Čt | Týden 2 | Týden 1 | Týden 1 |
| Pá 8. ledna | Týden 2 | Týden 1 | Týden 1 |
| 9. ledna | Týden 2 | Týden 1 | Týden 1 |
Následující příklad ukazuje, jak CalendarWeekRule se hodnoty a DayOfWeek hodnoty 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 určený první den v týdnu neděle, první neděle (6. ledna) je první den prvního týdne v roce a sobota (5. ledna) patří k padesáti třetímu týdnu předchozího roku. Změna pravidla kalendářního týdne tak, aby FirstFourDayWeek definovala úterý (leden 1) jako začátek prvního týdne v roce, protože mezi úterým, lednem 1 a neděli, 6. Pomocí tohoto pravidla patří 5. ledna do prvního týdne v roce. Pro rok 2010 rok, ve kterém 1 leden spadá do pátku, použije FirstFourDayWeek pravidlo jako DayOfWeek.Sunday první den v týdnu činí neděli, 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:
Nenamapuje se přesně na ISO 8601. Rozdíly jsou popsány v blogové položce ISO 8601 Week of Year ve formátu Microsoft .NET. Začněte s .NET Core 3.0 ISOWeek.GetYear a ISOWeek.GetWeekOfYear tento problém vyřešte.
Každý CultureInfo objekt podporuje sadu kalendářů. Vlastnost Calendar vrátí výchozí kalendář jazykové verze a OptionalCalendars vlastnost vrátí pole obsahující všechny kalendáře podporované jazykovou verzí. Chcete-li změnit kalendář používaný objektem CultureInfo, nastavte Calendar vlastnost CultureInfo.DateTimeFormat na nový Calendar.