Calendar.GetWeekOfYear(DateTime, CalendarWeekRule, DayOfWeek) Methode

Definition

Gibt die Woche des Jahrs zurück, in die das Datum im angegebenen DateTime-Wert fällt.

public:
 virtual int GetWeekOfYear(DateTime time, System::Globalization::CalendarWeekRule rule, DayOfWeek firstDayOfWeek);
public virtual int GetWeekOfYear (DateTime time, System.Globalization.CalendarWeekRule rule, DayOfWeek firstDayOfWeek);
abstract member GetWeekOfYear : DateTime * System.Globalization.CalendarWeekRule * DayOfWeek -> int
override this.GetWeekOfYear : DateTime * System.Globalization.CalendarWeekRule * DayOfWeek -> int
Public Overridable Function GetWeekOfYear (time As DateTime, rule As CalendarWeekRule, firstDayOfWeek As DayOfWeek) As Integer

Parameter

time
DateTime

Ein Datums- und Uhrzeitwert.

rule
CalendarWeekRule

Ein Enumerationswert, der eine Kalenderwoche definiert.

firstDayOfWeek
DayOfWeek

Ein Enumerationswert, der den ersten Tag der Woche darstellt.

Gibt zurück

Int32

Eine positive ganze Zahl, die die Woche des Jahres darstellt, in die das im time-Parameter angegebene Datum fällt.

Ausnahmen

time ist früher als MinSupportedDateTime oder später als MaxSupportedDateTime.

- oder -

firstDayOfWeek ist kein gültiger DayOfWeek -Wert.

- oder -

rule ist kein gültiger CalendarWeekRule -Wert.

Beispiele

Das folgende Codebeispiel zeigt, wie das Ergebnis von GetWeekOfYear je FirstDayOfWeek nach und CalendarWeekRule verwendet variiert. Wenn das angegebene Datum der letzte Tag des Jahres ist, GetWeekOfYear gibt die Gesamtzahl der Wochen in diesem Jahr zurück.

using namespace System;
using namespace System::Globalization;
int main()
{
   
   // Gets the Calendar instance associated with a CultureInfo.
   CultureInfo^ myCI = gcnew 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 = 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).
*/
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).

*/
Imports System.Globalization

Public Class SamplesCalendar

   Public Shared Sub Main()
      
      ' Gets the Calendar instance associated with a CultureInfo.
      Dim myCI As New CultureInfo("en-US")
      Dim myCal As Calendar = myCI.Calendar
      
      ' Gets the DTFI properties required by GetWeekOfYear.
      Dim myCWR As CalendarWeekRule = myCI.DateTimeFormat.CalendarWeekRule
      Dim myFirstDOW As DayOfWeek = 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.
      Dim 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)
   End Sub
End Class


'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).

Hinweise

Diese Methode kann verwendet werden, um die Anzahl der Wochen im Jahr zu bestimmen, indem Sie auf den letzten Tag des Jahres festlegen time .

Das DateTimeFormatInfo Objekt für eine bestimmte Kultur, die den von der DateTimeFormatInfo.Calendar -Eigenschaft angegebenen Kalender verwendet, enthält die folgenden kulturspezifischen Werte, die für die rule Parameter und firstDayOfWeek verwendet werden können:

Hinweis

Dies entspricht nicht genau iso 8601. Die Unterschiede werden im Blogeintrag ISO 8601 Week of Year Format in Microsoft .NET erläutert. Beginnen Sie mit .NET Core 3.0, ISOWeek.GetYear und ISOWeek.GetWeekOfYear lösen Sie dieses Problem.

Im folgenden Beispiel wird das Objekt der aktuellen Kultur DateTimeFormatInfo verwendet, um zu bestimmen, dass sich der 1. Januar 2011 in der ersten Woche des Jahres im gregorianischen Kalender befindet.

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)
Imports System.Globalization

Module Example
   Public Sub Main()
      Dim dfi As DateTimeFormatInfo = DateTimeFormatInfo.CurrentInfo
      Dim date1 As Date = #1/1/2011#
      Dim cal As Calendar = dfi.Calendar
      
      Console.WriteLine("{0:d}: Week {1} ({2})", date1, 
                        cal.GetWeekOfYear(date1, dfi.CalendarWeekRule, 
                                          dfi.FirstDayOfWeek),
                        cal.ToString().Substring(cal.ToString().LastIndexOf(".") + 1))       
   End Sub
End Module
' The example displays the following output:
'       1/1/2011: Week 1 (GregorianCalendar)

Bei einigen Kalendern löst ein Aufruf der GetWeekOfYear -Methode eine für bestimmte Kombinationen von rule und firstDayOfWeek -Werten ausArgumentOutOfRangeException, auch wenn time das von der Eigenschaft dieses Kalenders MinSupportedDateTime zurückgegebene Datum größer ist. In der folgenden Tabelle sind die betroffenen Kalender, die spezifischen rule Werte und der Bereich der frühesten unterstützten Werte aufgeführt time . Der spezifische Mindestwert DateTime hängt vom Wert des firstDayOfWeek Parameters ab.

Kalender CalendarWeekRule-Wert Gregorianisches Datum (M/TT/JJJJ) Datum im Kalender (M/TT/JJJJ)
ChineseLunisolarCalendar FirstFullWeek 19.02.1901 bis 25.02.1901 1.1.1901 bis 1.7.1901
ChineseLunisolarCalendar FirstFourDayWeek 19.02.1901 bis 22.02.1901 1/01/1901 bis 1/04/1901
HebrewCalendar FirstDay 9/17/1583 1/01/5344
HebrewCalendar FirstFullWeek 17.09.1583 bis 23.09.1583 1/01/5344 bis 1/07/5344
HebrewCalendar FirstFourDayWeek 17.09.1583 bis 20.09.1583 1/01/5344 bis 1/04/5344
HijriCalendar FirstFullWeek 18.07.0622 bis 24.06.0622 1/01/0001 bis 1/07/0001
HijriCalendar FirstFourDayWeek 18.07.0622 bis 21.06.0622 1/01/0001 bis 1/04/0001
JapaneseLunisolarCalendar FirstFullWeek 28.1.1960 bis 2.03.1960 1/01/35 bis 1/07/0035
JapaneseLunisolarCalendar FirstFourDayWeek 28.1.1960 bis 31.1960 01.01.0035 bis 1.04.0035
JulianCalendar FirstFullWeek 01.01.0001 bis 1.05.0001 1/03/0001 bis 1/07/0001
JulianCalendar FirstFourDayWeek 1/01/0001 bis 1/02/0001 1/03/0001 bis 1/04/0001
KoreanLunisolarCalendar FirstFullWeek 14.02.0918 bis 2.20.0918 1/01/0918 bis 1/07/0918
KoreanLunisolarCalendar FirstFourDayWeek 2/14/0918 bis 2/17/0918 1/01/0918 bis 1/04/0918
PersianCalendar FirstFullWeek 21.03.0622 bis 27.06.0622 1/01/0001 bis 1/07/0001
PersianCalendar FirstFourDayWeek 21.03.0622 bis 24.06.0622 1/01/0001 bis 1/04/0001
TaiwanLunisolarCalendar FirstFullWeek 2/18/1912 bis 2/24/1912 1/01/0001 bis 1/07/0001
TaiwanLunisolarCalendar FirstFourDayWeek 18.2.1912 bis 21.02.1912 1/01/0001 bis 1/04/0001
UmAlQuraCalendar FirstFullWeek 30.4.1900 bis 5.06.1900 1/01/1318 bis 1/07/1318
UmAlQuraCalendar FirstFourDayWeek 30.4.1900 bis 5.03.1900 1/01/1318 bis 1/04/1318

Gilt für

Siehe auch