CalendarWeekRule Výčet

Definice

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
CalendarWeekRule
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á Týden 1 Poslední týden předchozího roku Poslední týden předchozího roku
So 2. ledna Týden 1 Poslední týden předchozího roku Poslední týden předchozího roku
Led 3 Ne Týden 2 Týden 1 Týden 1
4. ledna po Týden 2 Týden 1 Týden 1
Út 5. ledna Týden 2 Týden 1 Týden 1
6. ledna – Wed Týden 2 Týden 1 Týden 1
7. ledna čt Týden 2 Týden 1 Týden 1
Pá ledna 8 Týden 2 Týden 1 Týden 1
So 9. ledna Týden 2 Týden 1 Týden 1

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 připadá první den roku (1. ledna) v roce 2013 na úterý. Pokud je prvním dnem v týdnu 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 tak, aby FirstFourDayWeek definovalo ú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. Při použití tohoto pravidla patří 5. leden prvnímu týdnu v roce. Pro rok 2010 platí, že rok, ve kterém 1. leden spadá do pátku a použije FirstFourDayWeek se pravidlo s DayOfWeek.Sunday jako první den týdne, z neděle 3. ledna začátek prvního týdne v roce, 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 blogové položce ISO 8601 Week of Year ve formátu Microsoft .NET. Začněte s .NET Core 3.0 a ISOWeek.GetWeekOfYear vyřešte ISOWeek.GetYear tento problém.

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í. Chcete-li změnit kalendář používaný objektem CultureInfo, nastavte Calendar vlastnost CultureInfo.DateTimeFormat parametru na nový Calendar.

Platí pro

Viz také