CalendarWeekRule Enum
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
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
- 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.