CalendarWeekRule Enumerazione
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Definisce regole diverse per determinare la prima settimana dell'anno.
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
- Ereditarietà
- Attributi
Campi
FirstDay | 0 | Indica che la prima settimana dell'anno inizia con il primo giorno dell'anno e termina prima del successivo primo giorno della settimana designato. Il valore è 0. |
FirstFourDayWeek | 2 | Indica che la prima settimana dell'anno è la prima settimana con quattro o più giorni prima del primo giorno della settimana designato. Il valore è 2. |
FirstFullWeek | 1 | Indica che la prima settimana dell'anno inizia con la prima occorrenza del primo giorno della settimana designato in corrispondenza o dopo il primo giorno dell'anno. Il valore è uguale a 1. |
Commenti
Un membro dell'enumerazione CalendarWeekRule viene restituito dalla proprietà DateTimeFormatInfo.CalendarWeekRule e viene utilizzato dal calendario corrente delle impostazioni cultura per determinare la regola relativa alle settimane del calendario. Il valore dell'enumerazione viene anche utilizzato come parametro per il metodo Calendar.GetWeekOfYear.
Le regole relative alle settimane del calendario dipendono dal valore System.DayOfWeek, che indica il primo giorno della settimana, nonché dal valore CalendarWeekRule. La DateTimeFormatInfo.FirstDayOfWeek proprietà fornisce il valore predefinito per una cultura, ma qualsiasi DayOfWeek valore può essere specificato come primo giorno della settimana nel Calendar.GetWeekOfYear metodo .
La prima settimana in base al FirstDay
valore può avere uno a sette giorni. La prima settimana in base al FirstFullWeek
valore ha sempre sette giorni. La prima settimana in base al FirstFourDayWeek
valore può avere quattro-sette giorni.
Ad esempio, nel calendario gregoriano si supponga che il primo giorno dell'anno (1 gennaio) cade il martedì e il primo giorno designato della settimana è domenica. La selezione FirstFullWeek
definisce la prima domenica (6 gennaio) come inizio della prima settimana dell'anno. I primi cinque giorni dell'anno sono considerati parte dell'ultima settimana dell'anno precedente. Al contrario, la selezione FirstFourDayWeek
definisce il primo giorno dell'anno (1 gennaio) come inizio della prima settimana dell'anno perché ci sono più di quattro giorni dal 1 gennaio al giorno prima della domenica seguente.
Data | FirstDay | FirstFullWeek | FirstFourDayWeek |
---|---|---|---|
31 di dicembre | Ultima settimana dell'anno precedente | Ultima settimana dell'anno precedente | Ultima settimana dell'anno precedente |
1 Gennaio | Settimana 1 | Ultima settimana dell'anno precedente | Settimana 1 |
2 Gennaio Wed | Settimana 1 | Ultima settimana dell'anno precedente | Settimana 1 |
3 Gennaio | Settimana 1 | Ultima settimana dell'anno precedente | Settimana 1 |
4 gennaio | Settimana 1 | Ultima settimana dell'anno precedente | Settimana 1 |
5 gennaio | Settimana 1 | Ultima settimana dell'anno precedente | Settimana 1 |
6 gennaio | Settimana 2 | Settimana 1 | Settimana 2 |
7 gennaio | Settimana 2 | Settimana 1 | Settimana 2 |
8 gennaio | Settimana 2 | Settimana 1 | Settimana 2 |
9 Gennaio Wed | Settimana 2 | Settimana 1 | Settimana 2 |
10 gennaio | Settimana 2 | Settimana 1 | Settimana 2 |
11 gennaio | Settimana 2 | Settimana 1 | Settimana 2 |
12 gennaio | Settimana 2 | Settimana 1 | Settimana 2 |
Si supponga che il primo giorno dell'anno (1 gennaio) cade su un venerdì e il primo giorno designato della settimana è domenica. La selezione FirstFourDayWeek
definisce la prima domenica (3 gennaio) come inizio della prima settimana dell'anno perché sono presenti meno di quattro giorni dal 1 gennaio al giorno prima della domenica successiva.
Data | FirstDay | FirstFullWeek | FirstFourDayWeek |
---|---|---|---|
31 dicembre | Settimana scorsa dell'anno precedente | Settimana scorsa dell'anno precedente | Settimana scorsa dell'anno precedente |
1 gennaio venerdì | Settimana 1 | Settimana scorsa dell'anno precedente | Settimana scorsa dell'anno precedente |
Gennaio 2 Sab | Settimana 1 | Settimana scorsa dell'anno precedente | Settimana scorsa dell'anno precedente |
Jan 3 Sun | Settimana 2 | Settimana 1 | Settimana 1 |
4 gennaio | Settimana 2 | Settimana 1 | Settimana 1 |
5 gennaio | Settimana 2 | Settimana 1 | Settimana 1 |
6 gennaio Wed | Settimana 2 | Settimana 1 | Settimana 1 |
Jan 7 Thu | Settimana 2 | Settimana 1 | Settimana 1 |
8 gennaio venerdì | Settimana 2 | Settimana 1 | Settimana 1 |
Gennaio 9 Sat | Settimana 2 | Settimana 1 | Settimana 1 |
Nell'esempio seguente viene illustrato come i valori CalendarWeekRule e DayOfWeek vengono utilizzati insieme per determinare come vengono assegnate le settimane. Nel calendario gregoriano il primo giorno dell'anno (1 gennaio) nel 2013 cade di martedì. Se il primo giorno della settimana è domenica, la prima domenica (6 gennaio) è il primo giorno della prima settimana dell'anno e sabato (5 gennaio) appartiene alla cinquantatreesima settimana dell'anno precedente. La modifica della regola relativa alle settimane del calendario in FirstFourDayWeek
consente di definire martedì (1 gennaio) come inizio della prima settimana dell'anno poiché tra martedì 1 gennaio e domenica 6 gennaio ci sono più di quattro giorni. Utilizzando questa regola, il 5 gennaio appartiene alla prima settimana dell'anno. Per il 2010, un anno in cui l'1 gennaio cade di venerdì, l'applicazione della regola FirstFourDayWeek
con DayOfWeek.Sunday come primo giorno della settimana pone domenica 3 gennaio all'inizio della prima settimana dell'anno perché la prima settimana nel 2010 che ha più di quattro giorni va dal 3 al 9 gennaio.
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
Nota
Questo non esegue esattamente il mapping a ISO 8601. Le differenze sono descritte nel post di blog ISO 8601 Week of Year format in Microsoft .NET. A partire da .NET Core 3.0 ISOWeek.GetYear e ISOWeek.GetWeekOfYear risolvere questo problema.
Ogni CultureInfo oggetto supporta un set di calendari. La Calendar proprietà restituisce il calendario predefinito per le impostazioni cultura e la OptionalCalendars proprietà restituisce una matrice contenente tutti i calendari supportati dalle impostazioni cultura. Per modificare il calendario utilizzato da un CultureInfooggetto , impostare la Calendar proprietà di CultureInfo.DateTimeFormat su un nuovo Calendaroggetto .