Freigeben über


CalendarWeekRule Enumeration

Definition

Definiert verschiedene Regeln für die Bestimmung der ersten Woche des Jahres.

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
Vererbung
CalendarWeekRule
Attribute

Felder

FirstDay 0

Gibt an, dass die erste Woche des Jahres am ersten Tag des Jahres beginnt und vor dem folgenden, als erstem Wochentag bestimmten Tag endet. Der Wert ist "0".

FirstFourDayWeek 2

Gibt an, dass die erste Woche des Jahres am ersten Tag des Jahres beginnt und vor dem folgenden, als erstem Wochentag bestimmten Tag endet. Der Wert ist "2".

FirstFullWeek 1

Gibt an, dass die erste Woche des Jahres beim ersten Vorkommen des Tages, der als erster Wochentag festgelegt wurde, an oder nach dem ersten Tag des Jahres beginnt. Der Wert ist "1".

Hinweise

Ein Member der CalendarWeekRule Enumeration wird von der DateTimeFormatInfo.CalendarWeekRule -Eigenschaft zurückgegeben und vom aktuellen Kalender der Kultur verwendet, um die Kalenderwochenregel zu bestimmen. Der Enumerationswert wird auch als Parameter für die Calendar.GetWeekOfYear -Methode verwendet.

Kalenderwochenregeln hängen System.DayOfWeek vom Wert ab, der den ersten Tag der Woche angibt, zusätzlich zu einem CalendarWeekRule Wert. Die DateTimeFormatInfo.FirstDayOfWeek -Eigenschaft stellt den Standardwert für eine Kultur bereit, aber jeder DayOfWeek Wert kann als erster Wochentag in der Calendar.GetWeekOfYear -Methode angegeben werden.

Die erste Woche, die auf dem FirstDay Wert basiert, kann ein bis sieben Tage dauern. Die erste Woche, die auf dem FirstFullWeek Wert basiert, hat immer sieben Tage. Die erste Woche, die auf dem FirstFourDayWeek Wert basiert, kann vier bis sieben Tage dauern.

Nehmen Sie beispielsweise im gregorianischen Kalender an, dass der erste Tag des Jahres (1. Januar) auf einen Dienstag fällt und der angegebene erste Tag der Woche der Sonntag ist. Die Auswahl FirstFullWeek definiert den ersten Sonntag (6. Januar) als Beginn der ersten Woche des Jahres. Die ersten fünf Tage des Jahres werden als Teil der letzten Woche des Vorjahres betrachtet. Im Gegensatz dazu definiert die Auswahl FirstFourDayWeek den ersten Tag des Jahres (1. Januar) als Beginn der ersten Woche des Jahres, da es mehr als vier Tage vom 1. Januar bis zum Tag vor dem folgenden Sonntag gibt.

Datum FirstDay FirstFullWeek FirstFourDayWeek
Dez 31 Mo Letzte Woche des Vorjahres Letzte Woche des Vorjahres Letzte Woche des Vorjahres
1. Januar Di Woche 1 Letzte Woche des Vorjahres Woche 1
2. Januar Mid Woche 1 Letzte Woche des Vorjahres Woche 1
3. Januar Do Woche 1 Letzte Woche des Vorjahres Woche 1
4. Januar Fr Woche 1 Letzte Woche des Vorjahres Woche 1
5. Januar Sa Woche 1 Letzte Woche des Vorjahres Woche 1
6. Januar So Woche 2 Woche 1 Woche 2
7. Januar Mo Woche 2 Woche 1 Woche 2
8. Januar Di Woche 2 Woche 1 Woche 2
9. Januar Mid Woche 2 Woche 1 Woche 2
10. Januar Do Woche 2 Woche 1 Woche 2
11. Januar Fr Woche 2 Woche 1 Woche 2
12. Januar Sa Woche 2 Woche 1 Woche 2

Angenommen, der erste Tag des Jahres (1. Januar) fällt auf einen Freitag und der angegebene erste Tag der Woche ist Sonntag. Die Auswahl FirstFourDayWeek definiert den ersten Sonntag (3. Januar) als Beginn der ersten Woche des Jahres, da es weniger als vier Tage vom 1. Januar bis zum Tag vor dem folgenden Sonntag gibt.

Datum FirstDay FirstFullWeek FirstFourDayWeek
Dez 31 Do Letzte Woche des Vorjahres Letzte Woche des Vorjahres Letzte Woche des Vorjahres
1. Januar Fr Woche 1 Letzte Woche des Vorjahres Letzte Woche des Vorjahres
2. Januar Sa Woche 1 Letzte Woche des Vorjahres Letzte Woche des Vorjahres
Jan 3 So Woche 2 Woche 1 Woche 1
Jan 4 Mo Woche 2 Woche 1 Woche 1
Jan 5 Di Woche 2 Woche 1 Woche 1
Jan 6 Mi Woche 2 Woche 1 Woche 1
7. Januar Do Woche 2 Woche 1 Woche 1
Jan 8 Fr Woche 2 Woche 1 Woche 1
9. Januar Sa Woche 2 Woche 1 Woche 1

Im folgenden Beispiel wird veranschaulicht, wie die CalendarWeekRule Werte und DayOfWeek zusammen verwendet werden, um zu bestimmen, wie Wochen zugewiesen werden. Im gregorianischen Kalender fällt der erste Tag des Jahres (1. Januar) im Jahr 2013 auf einen Dienstag. Wenn der erste Tag der Woche Sonntag ist, ist der erste Sonntag (6. Januar) der erste Tag der ersten Woche des Jahres, und Samstag (5. Januar) gehört zur dreiundfünfzigste Woche des Vorjahres. Wenn Sie die Kalenderwochenregel so FirstFourDayWeek ändern, wird Dienstag (1. Januar) als Beginn der ersten Woche des Jahres definiert, da zwischen Dienstag, 1. Januar und Sonntag, 6. Januar, mehr als vier Tage liegen. Mit dieser Regel gehört der 5. Januar zur ersten Woche des Jahres. Für 2010, ein Jahr, in dem der 1. Januar auf einen Freitag fällt, macht die Anwendung der FirstFourDayWeek Regel mit DayOfWeek.Sunday als erster Tag der Woche Sonntag, 3. Januar den Beginn der ersten Woche des Jahres, da die erste Woche im Jahr 2010, die mehr als vier Tage hat, vom 3. bis 9. Januar ist.

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

Hinweis

Dies entspricht nicht genau iso 8601. Die Unterschiede werden im Blogeintrag ISO 8601 Week of Year format in Microsoft .NET erläutert. Ab .NET Core 3.0 können ISOWeek.GetYear Sie ISOWeek.GetWeekOfYear dieses Problem lösen.

Jedes CultureInfo Objekt unterstützt eine Reihe von Kalendern. Die Calendar -Eigenschaft gibt den Standardkalender für die Kultur zurück, und die OptionalCalendars -Eigenschaft gibt ein Array zurück, das alle von der Kultur unterstützten Kalender enthält. Um den von einem CultureInfoverwendeten Kalender zu ändern, legen Sie die Calendar -Eigenschaft von CultureInfo.DateTimeFormat auf einen neuen Calendarfest.

Gilt für:

Weitere Informationen