Calendar.GetWeekOfYear(DateTime, CalendarWeekRule, DayOfWeek) Metodo

Definizione

Restituisce la settimana dell'anno che comprende la data nel valore DateTime specificato.

C#
public virtual int GetWeekOfYear (DateTime time, System.Globalization.CalendarWeekRule rule, DayOfWeek firstDayOfWeek);

Parametri

time
DateTime

Valore di data e ora.

rule
CalendarWeekRule

Valore di enumerazione che definisce una settimana di calendario.

firstDayOfWeek
DayOfWeek

Valore di enumerazione che rappresenta il primo giorno della settimana.

Restituisce

Valore intero positivo che rappresenta la settimana dell'anno che include la data nel parametro time.

Eccezioni

time è precedente a MinSupportedDateTime o successivo a MaxSupportedDateTime.

-oppure-

firstDayOfWeek non è un valore valido di DayOfWeek.

-oppure-

rule non è un valore valido di CalendarWeekRule.

Esempio

Nell'esempio di codice seguente viene illustrato il modo in cui il risultato varia a seconda dell'oggetto GetWeekOfYear e dell'oggetto FirstDayOfWeekCalendarWeekRule usato. Se la data specificata è l'ultimo giorno dell'anno, GetWeekOfYear restituisce il numero totale di settimane in tale anno.

C#
using System;
using System.Globalization;

public class SamplesCalendar  {

   public static void Main()  {

      // Gets the Calendar instance associated with a CultureInfo.
      CultureInfo myCI = new CultureInfo("en-US");
      Calendar myCal = myCI.Calendar;

      // Gets the DTFI properties required by GetWeekOfYear.
      CalendarWeekRule myCWR = myCI.DateTimeFormat.CalendarWeekRule;
      DayOfWeek myFirstDOW = myCI.DateTimeFormat.FirstDayOfWeek;

      // Displays the number of the current week relative to the beginning of the year.
      Console.WriteLine( "The CalendarWeekRule used for the en-US culture is {0}.", myCWR );
      Console.WriteLine( "The FirstDayOfWeek used for the en-US culture is {0}.", myFirstDOW );
      Console.WriteLine( "Therefore, the current week is Week {0} of the current year.", myCal.GetWeekOfYear( DateTime.Now, myCWR, myFirstDOW ));

      // Displays the total number of weeks in the current year.
      DateTime LastDay = new System.DateTime( DateTime.Now.Year, 12, 31 );
      Console.WriteLine( "There are {0} weeks in the current year ({1}).", myCal.GetWeekOfYear( LastDay, myCWR, myFirstDOW ), LastDay.Year );
   }
}

/*
This code produces the following output.  Results vary depending on the system date.

The CalendarWeekRule used for the en-US culture is FirstDay.
The FirstDayOfWeek used for the en-US culture is Sunday.
Therefore, the current week is Week 1 of the current year.
There are 53 weeks in the current year (2001).

*/

Commenti

Questo metodo può essere usato per determinare il numero di settimane nell'anno impostando time sull'ultimo giorno dell'anno.

L'oggetto DateTimeFormatInfo per una determinata cultura che usa il calendario indicato dalla DateTimeFormatInfo.Calendar proprietà include i valori specifici delle impostazioni cultura seguenti che possono essere usati per i rule parametri e firstDayOfWeek :

Nota

Questo non esegue il mapping esattamente a ISO 8601. Le differenze sono descritte nella voce di blog ISO 8601 Week of Year in Microsoft .NET. A partire da .NET Core 3.0 ISOWeek.GetYear e ISOWeek.GetWeekOfYear risolvere questo problema.

Nell'esempio seguente viene usato l'oggetto cultura corrente per determinare che il 1° gennaio 2011 si trova nella prima settimana dell'anno DateTimeFormatInfo nel calendario gregoriano.

C#
using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      DateTimeFormatInfo dfi = DateTimeFormatInfo.CurrentInfo;
      DateTime date1 = new DateTime(2011, 1, 1);
      Calendar cal = dfi.Calendar;

      Console.WriteLine("{0:d}: Week {1} ({2})", date1,
                        cal.GetWeekOfYear(date1, dfi.CalendarWeekRule,
                                          dfi.FirstDayOfWeek),
                        cal.ToString().Substring(cal.ToString().LastIndexOf(".") + 1));
   }
}
// The example displays the following output:
//       1/1/2011: Week 1 (GregorianCalendar)

Per alcuni calendari, una chiamata al GetWeekOfYear metodo genera una ArgumentOutOfRangeException combinazione specifica di rule valori e firstDayOfWeek anche se time è maggiore della data restituita dalla proprietà del MinSupportedDateTime calendario. Nella tabella seguente sono elencati i calendari interessati, i valori specifici rule e l'intervallo dei valori più antichi supportati time . Il valore minimo DateTime specifico dipende dal valore del firstDayOfWeek parametro.

Calendario Valore CalendarWeekRule Data gregoriana (M/dd/yyyy) Data nel calendario (M/dd/yyyy)
ChineseLunisolarCalendar FirstFullWeek Da 2/19/1901 a 2/25/1901 Da 1/1/1901 a 1/7/1901
ChineseLunisolarCalendar FirstFourDayWeek Da 2/19/1901 a 2/22/1901 Da 1/01/1901 a 1/04/1901
HebrewCalendar FirstDay 9/17/1583 1/01/5344
HebrewCalendar FirstFullWeek Da 9/17/1583 a 9/23/1583 1/01/5344 a 1/07/53444
HebrewCalendar FirstFourDayWeek Da 9/17/1583 a 9/20/1583 1/01/53444 a 1/04/53444
HijriCalendar FirstFullWeek Da 7/18/0622 a 7/24/0622 Da 1/01/0001 a 1/07/0001
HijriCalendar FirstFourDayWeek Da 7/18/0622 a 7/21/0622 Da 1/01/0001 a 1/04/0001
JapaneseLunisolarCalendar FirstFullWeek Da 1/28/1960 a 2/03/1960 Da 1/01/35 a 1/07/0035
JapaneseLunisolarCalendar FirstFourDayWeek Da 1/28/1960 a 1/31/1960 1/01/0035 a 1/04/0035
JulianCalendar FirstFullWeek Da 1/01/0001 a 1/05/0001 Da 1/03/0001 a 1/07/0001
JulianCalendar FirstFourDayWeek Da 1/01/0001 a 1/02/0001 Da 1/03/0001 a 1/04/0001
KoreanLunisolarCalendar FirstFullWeek Da 2/14/0918 a 2/20/0918 1/01/0918 a 1/07/0918
KoreanLunisolarCalendar FirstFourDayWeek Da 2/14/0918 a 2/17/0918 Da 1/01/0918 a 1/04/0918
PersianCalendar FirstFullWeek Da 3/21/0622 a 3/27/0622 Da 1/01/0001 a 1/07/0001
PersianCalendar FirstFourDayWeek Da 3/21/0622 a 3/24/0622 Da 1/01/0001 a 1/04/0001
TaiwanLunisolarCalendar FirstFullWeek Da 2/18/1912 a 2/24/1912 Da 1/01/0001 a 1/07/0001
TaiwanLunisolarCalendar FirstFourDayWeek Da 2/18/1912 a 2/21/1912 Da 1/01/0001 a 1/04/0001
UmAlQuraCalendar FirstFullWeek Da 4/30/1900 a 5/06/1900 Da 1/01/1318 a 1/07/1318
UmAlQuraCalendar FirstFourDayWeek Da 4/30/1900 a 5/03/1900 Da 1/01/1318 a 1/04/1318

Si applica a

Prodotto Versioni
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Vedi anche