CalendarWeekRule Enum

Definition

Definierar olika regler för att bestämma årets första vecka.

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
Arv
CalendarWeekRule
Attribut

Fält

Name Värde Description
FirstDay 0

Anger att årets första vecka börjar den första dagen på året och slutar före följande avsedda första dag i veckan. Värdet är 0.

FirstFullWeek 1

Anger att den första veckan på året börjar den första förekomsten av den avsedda första dagen i veckan på eller efter den första dagen på året. Värdet är 1.

FirstFourDayWeek 2

Anger att årets första vecka är den första veckan med fyra eller fler dagar före den avsedda första dagen i veckan. Värdet är 2.

Kommentarer

En medlem i CalendarWeekRule uppräkningen returneras av DateTimeFormatInfo.CalendarWeekRule egenskapen och används av kulturens aktuella kalender för att fastställa regeln för kalendervecka. Uppräkningsvärdet används också som en parameter till Calendar.GetWeekOfYear metoden.

Regler för kalendervecka beror på det System.DayOfWeek värde som anger den första dagen i veckan utöver beroende på ett CalendarWeekRule värde. Egenskapen DateTimeFormatInfo.FirstDayOfWeek tillhandahåller standardvärdet för en kultur, men valfritt DayOfWeek värde kan anges som den första dagen i veckan i Calendar.GetWeekOfYear metoden.

Den första veckan baserat på FirstDay värdet kan ha en till sju dagar. Den första veckan baserat på värdet FirstFullWeek har alltid sju dagar. Den första veckan baserat på FirstFourDayWeek värdet kan ha fyra till sju dagar.

Anta till exempel i den gregorianska kalendern att den första dagen på året (1 januari) infaller på en tisdag och den avsedda första dagen i veckan är söndag. När du väljer FirstFullWeek definieras den första söndagen (6 januari) som början av årets första vecka. Årets första fem dagar anses vara en del av föregående års sista vecka. Däremot definierar valet FirstFourDayWeek den första dagen på året (1 januari) som början av den första veckan på året eftersom det finns mer än fyra dagar från 1 januari till dagen före följande söndag.

Date FirstDay FirstFullWeek FirstFourDayWeek
31 dec mån Förra veckan föregående år Förra veckan föregående år Förra veckan föregående år
1 januari tis Vecka 1 Förra veckan föregående år Vecka 1
2 januari Ons Vecka 1 Förra veckan föregående år Vecka 1
3 januari tor Vecka 1 Förra veckan föregående år Vecka 1
4 januari fre Vecka 1 Förra veckan föregående år Vecka 1
5 januari lör Vecka 1 Förra veckan föregående år Vecka 1
6 januari sön Vecka 2 Vecka 1 Vecka 2
7 januari mån Vecka 2 Vecka 1 Vecka 2
8 januari tis Vecka 2 Vecka 1 Vecka 2
9 januari Ons Vecka 2 Vecka 1 Vecka 2
10 januari tor Vecka 2 Vecka 1 Vecka 2
11 januari fre Vecka 2 Vecka 1 Vecka 2
12 januari lör Vecka 2 Vecka 1 Vecka 2

Anta att den första dagen på året (1 januari) infaller på en fredag och den avsedda första dagen i veckan är söndag. När du väljer FirstFourDayWeek definieras den första söndagen (3 januari) som början av årets första vecka eftersom det är mindre än fyra dagar från 1 januari till dagen före följande söndag.

Date FirstDay FirstFullWeek FirstFourDayWeek
31 dec tor Förra veckan föregående år Förra veckan föregående år Förra veckan föregående år
1 januari fre Vecka 1 Förra veckan föregående år Förra veckan föregående år
2 januari lör Vecka 1 Förra veckan föregående år Förra veckan föregående år
3 januari sön Vecka 2 Vecka 1 Vecka 1
4 januari mån Vecka 2 Vecka 1 Vecka 1
5 januari tis Vecka 2 Vecka 1 Vecka 1
6 januari Ons Vecka 2 Vecka 1 Vecka 1
7 januari tor Vecka 2 Vecka 1 Vecka 1
8 januari fre Vecka 2 Vecka 1 Vecka 1
9 januari lör Vecka 2 Vecka 1 Vecka 1

I följande exempel visas hur CalendarWeekRule värdena och DayOfWeek används tillsammans för att avgöra hur veckor tilldelas. I den gregorianska kalendern infaller den första dagen på året (1 januari) 2013 på en tisdag. Om den avsedda första dagen i veckan är söndag är den första söndagen (6 januari) den första dagen i årets första vecka och lördagen (5 januari) tillhör den femtiotredde veckan föregående år. Om du ändrar regeln för kalendervecka till FirstFourDayWeek definieras tisdag (1 januari) som början av årets första vecka, eftersom det är mer än fyra dagar mellan tisdag, 1 januari och söndag 6 januari. Med den här regeln tillhör den 5 januari årets första vecka. För 2010, ett år då 1 januari infaller på en fredag, tillämpar FirstFourDayWeek regeln med DayOfWeek.Sunday som den första dagen i veckan gör söndagen den 3 januari början av årets första vecka, eftersom den första veckan 2010 som har mer än fyra dagar är 3 januari till 9 januari.

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

Note

Detta mappas inte exakt till ISO 8601. Skillnaderna beskrivs i blogginlägget ISO 8601 Week of Year format i Microsoft .NET. Från och med .NET Core 3.0 löser ISOWeek.GetYear och ISOWeek.GetWeekOfYear det här problemet.

Varje CultureInfo objekt stöder en uppsättning kalendrar. Egenskapen Calendar returnerar standardkalendern för kulturen och OptionalCalendars egenskapen returnerar en matris som innehåller alla kalendrar som stöds av kulturen. Om du vill ändra kalendern som används av en CultureInfoanger du Calendar egenskapen CultureInfo.DateTimeFormat för till en ny Calendar.

Gäller för

Se även