Sdílet prostřednictvím


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

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.

Platí pro

Viz také