CalendarWeekRule Enumerazione

Definizione

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à
CalendarWeekRule
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 .

Si applica a

Vedi anche