Freigeben über


Gewusst wie: Extrahieren des Wochentags aus einem bestimmten Datum

Mithilfe von .NET Framework kann schnell die Ordinalzahl des Wochentags für ein bestimmtes Datum ermittelt und der lokalisierte Name des Wochentags angezeigt werden. Ein Enumerationswert, der den einem bestimmten Datum entsprechenden Wochentag angibt, kann mit der DayOfWeek-Eigenschaft oder der DayOfWeek-Eigenschaft abgerufen werden. Beim Abrufen des Wochentagsnamens handelt es sich im Gegensatz dazu um einen Formatierungsvorgang, der durch den Aufruf einer Formatierungsmethode wie der ToString-Methode eines Datums- und Uhrzeitwerts oder der String.Format-Methode ausgeführt werden kann. In diesem Thema wird die Ausführung dieser Formatierungsvorgänge veranschaulicht.

So extrahieren Sie eine Zahl, die den Wochentag aus einem bestimmten Datum angibt

  1. Wenn Sie mit der Zeichenfolgendarstellung eines Datums arbeiten, konvertieren Sie sie mithilfe der statischen DateTime.Parse-Methode oder der statischen DateTimeOffset.Parse-Methode in einen DateTime-Wert oder einen DateTimeOffset-Wert.

  2. Rufen Sie mit der DateTime.DayOfWeek-Eigenschaft oder der DateTimeOffset.DayOfWeek-Eigenschaft einen DayOfWeek-Wert ab, der den Wochentag angibt.

  3. Führen Sie für den DayOfWeek-Wert ggf. eine Umwandlung (in C#) oder eine Konvertierung (in Visual Basic) in eine Ganzzahl aus.

Im folgenden Beispiel wird eine Ganzzahl angezeigt, die den Wochentag aus der Zeichenfolgendarstellung eines Datums darstellt.

Dim dateValue As Date = #6/11/2008#
Console.WriteLine(dateValue.DayOfWeek)           ' Displays 3
DateTime dateValue = new DateTime(2008, 6, 11);
Console.WriteLine((int) dateValue.DayOfWeek);      // Displays 3

So extrahieren Sie den abgekürzten Namen des Wochentags aus einem bestimmten Datum

  1. Wenn Sie mit der Zeichenfolgendarstellung eines Datums arbeiten, konvertieren Sie sie mithilfe der statischen DateTime.Parse-Methode oder der statischen DateTimeOffset.Parse-Methode in einen DateTime-Wert oder einen DateTimeOffset-Wert.

  2. Sie können den abgekürzten Namen des Wochentags der aktuellen Kultur oder einer bestimmten Kultur extrahieren:

    1. Um den abgekürzten Namen des Wochentags für die aktuelle Kultur zu extrahieren, rufen Sie die DateTime.ToString(String)-Instanzenmethode oder die DateTimeOffset.ToString(String)-Instanzenmethode des Datums- und Uhrzeitwerts auf und übergeben die Zeichenfolge "ddd" als format-Parameter. Das folgende Beispiel veranschaulicht den Aufruf der ToString(String)-Methode.

      Dim dateValue As Date = #6/11/2008#
      Console.WriteLine(dateValue.ToString("ddd"))    ' Displays Wed
      
      DateTime dateValue = new DateTime(2008, 6, 11);
      Console.WriteLine(dateValue.ToString("ddd"));    // Displays Wed
      
    2. Um den abgekürzten Namen des Wochentags für eine bestimmte Kultur zu extrahieren, rufen Sie die DateTime.ToString(String, IFormatProvider)-Instanzenmethode oder die DateTimeOffset.ToString(String, IFormatProvider)-Instanzenmethode des Datums- und Uhrzeitwerts ab. Übergeben Sie die Zeichenfolge "ddd" als format-Parameter. Übergeben Sie entweder ein CultureInfo-Objekt oder ein DateTimeFormatInfo-Objekt, das die Kultur darstellt, deren Wochentagsnamen Sie abrufen möchten, als provider-Parameter. Im folgenden Code wird ein Aufruf der ToString(String, IFormatProvider)-Methode unter Verwendung eines CultureInfo-Objekts veranschaulicht, das die Kultur fr-FR darstellt.

      Dim dateValue As Date = #6/11/2008#
      Console.WriteLine(dateValue.ToString("ddd", _
                        New CultureInfo("fr-FR")))    ' Displays mer.
      
      DateTime dateValue = new DateTime(2008, 6, 11);
      Console.WriteLine(dateValue.ToString("ddd", 
                        new CultureInfo("fr-FR")));    // Displays mer.
      

So extrahieren Sie den vollständigen Wochentagsnamen aus einem bestimmten Datum

  1. Wenn Sie mit der Zeichenfolgendarstellung eines Datums arbeiten, konvertieren Sie sie mithilfe der statischen DateTime.Parse-Methode oder der statischen DateTimeOffset.Parse-Methode in einen DateTime-Wert oder einen DateTimeOffset-Wert.

  2. Sie können den vollständigen Namen des Wochentags der aktuellen Kultur oder einer bestimmten Kultur extrahieren:

    1. Um den Namen des Wochentags für die aktuelle Kultur zu extrahieren, rufen Sie die DateTime.ToString(String)-Instanzenmethode oder die DateTimeOffset.ToString(String)-Instanzenmethode des Datums- und Uhrzeitwerts auf und übergeben die Zeichenfolge "dddd" als format-Parameter. Das folgende Beispiel veranschaulicht den Aufruf der ToString(String)-Methode.

      Dim dateValue As Date = #6/11/2008#
      Console.WriteLine(dateValue.ToString("dddd"))    ' Displays Wednesday
      
      DateTime dateValue = new DateTime(2008, 6, 11);
      Console.WriteLine(dateValue.ToString("dddd"));    // Displays Wednesday
      
    2. Um den Namen des Wochentags für eine bestimmte Kultur zu extrahieren, rufen Sie die DateTime.ToString(String, IFormatProvider)-Instanzenmethode oder die DateTimeOffset.ToString(String, IFormatProvider)-Instanzenmethode des Datums- und Uhrzeitwerts ab. Übergeben Sie die Zeichenfolge "dddd" als format-Parameter. Übergeben Sie entweder ein CultureInfo-Objekt oder ein DateTimeFormatInfo-Objekt, das die Kultur darstellt, deren Wochentagsnamen Sie abrufen möchten, als provider-Parameter. Im folgenden Code wird ein Aufruf der ToString(String, IFormatProvider)-Methode unter Verwendung eines CultureInfo-Objekts veranschaulicht, das die Kultur es-ES darstellt.

      Dim dateValue As Date = #6/11/2008#
      Console.WriteLine(dateValue.ToString("dddd", _
                        New CultureInfo("es-ES")))     ' Displays miércoles.
      
      DateTime dateValue = new DateTime(2008, 6, 11);
      Console.WriteLine(dateValue.ToString("dddd", 
                        new CultureInfo("es-ES")));    // Displays miércoles.
      

Beispiel

Im Beispiel wird die DateTime.DayOfWeek-Eigenschaft und die DateTimeOffset.DayOfWeek-Eigenschaft sowie die DateTime.ToString-Methode und die DateTimeOffset.ToString-Methode aufgerufen, um die Zahl abzurufen, die den Wochentag, den abgekürzten Wochentagsnamen und den vollständigen Wochentagsnamen eines bestimmten Datums darstellt.

Dim dateString As String = "6/11/2007"
Dim dateValue As Date
Dim dateOffsetValue As DateTimeOffset

Try
   Dim dateTimeFormats As DateTimeFormatInfo
   ' Convert date representation to a date value
   dateValue = Date.Parse(dateString, CultureInfo.InvariantCulture)
   dateOffsetValue = New DateTimeOffset(dateValue, _
                               TimeZoneInfo.Local.GetUtcOffset(dateValue))            
   ' Convert date representation to a number indicating the day of week
   Console.WriteLine(dateValue.DayOfWeek)
   Console.WriteLine(dateOffsetValue.DayOfWeek)

   ' Display abbreviated weekday name using current culture
   Console.WriteLine(dateValue.ToString("ddd"))
   Console.WriteLine(dateOffsetValue.ToString("ddd"))

   ' Display full weekday name using current culture
   Console.WriteLine(dateValue.ToString("dddd"))
   Console.WriteLine(dateOffsetValue.ToString("dddd"))

   ' Display abbreviated weekday name for de-DE culture
   Console.WriteLine(dateValue.ToString("ddd", New CultureInfo("de-DE")))
   Console.WriteLine(dateOffsetValue.ToString("ddd", _
                                              New CultureInfo("de-DE")))

   ' Display abbreviated weekday name with de-DE DateTimeFormatInfo object
   dateTimeFormats = New CultureInfo("de-DE").DateTimeFormat
   Console.WriteLine(dateValue.ToString("ddd", dateTimeFormats))
   Console.WriteLine(dateOffsetValue.ToString("ddd", dateTimeFormats))

   ' Display full weekday name for fr-FR culture
   Console.WriteLine(dateValue.ToString("ddd", New CultureInfo("fr-FR")))
   Console.WriteLine(dateOffsetValue.ToString("ddd", _
                                              New CultureInfo("fr-FR")))

   ' Display abbreviated weekday name with fr-FR DateTimeFormatInfo object
   dateTimeFormats = New CultureInfo("fr-FR").DateTimeFormat
   Console.WriteLine(dateValue.ToString("dddd", dateTimeFormats))
   Console.WriteLine(dateOffsetValue.ToString("dddd", dateTimeFormats))
Catch e As FormatException
   Console.WriteLine("Unable to convert {0} to a date.", dateString)
End Try
' The example displays the following output to the console:
'       1
'       1
'       Mon
'       Mon
'       Monday
'       Monday
'       Mo
'       Mo
'       Mo
'       Mo
'       lun.
'       lun.
'       lundi
'       lundi
string dateString = "6/11/2007";
DateTime dateValue;
DateTimeOffset dateOffsetValue;

try
{
   DateTimeFormatInfo dateTimeFormats;
   // Convert date representation to a date value
   dateValue = DateTime.Parse(dateString, CultureInfo.InvariantCulture);
   dateOffsetValue = new DateTimeOffset(dateValue, 
                                TimeZoneInfo.Local.GetUtcOffset(dateValue));         

   // Convert date representation to a number indicating the day of week
   Console.WriteLine((int) dateValue.DayOfWeek);
   Console.WriteLine((int) dateOffsetValue.DayOfWeek);

   // Display abbreviated weekday name using current culture
   Console.WriteLine(dateValue.ToString("ddd"));
   Console.WriteLine(dateOffsetValue.ToString("ddd"));

   // Display full weekday name using current culture
   Console.WriteLine(dateValue.ToString("dddd"));
   Console.WriteLine(dateOffsetValue.ToString("dddd"));

   // Display abbreviated weekday name for de-DE culture
   Console.WriteLine(dateValue.ToString("ddd", new CultureInfo("de-DE")));
   Console.WriteLine(dateOffsetValue.ToString("ddd", 
                                               new CultureInfo("de-DE")));

   // Display abbreviated weekday name with de-DE DateTimeFormatInfo object
   dateTimeFormats = new CultureInfo("de-DE").DateTimeFormat;
   Console.WriteLine(dateValue.ToString("ddd", dateTimeFormats));
   Console.WriteLine(dateOffsetValue.ToString("ddd", dateTimeFormats));

   // Display full weekday name for fr-FR culture
   Console.WriteLine(dateValue.ToString("ddd", new CultureInfo("fr-FR")));
   Console.WriteLine(dateOffsetValue.ToString("ddd", 
                                              new CultureInfo("fr-FR")));

   // Display abbreviated weekday name with fr-FR DateTimeFormatInfo object
   dateTimeFormats = new CultureInfo("fr-FR").DateTimeFormat;
   Console.WriteLine(dateValue.ToString("dddd", dateTimeFormats));
   Console.WriteLine(dateOffsetValue.ToString("dddd", dateTimeFormats));
}
catch (FormatException)
{
   Console.WriteLine("Unable to convert {0} to a date.", dateString);
}
// The example displays the following output to the console:
//       1
//       1
//       Mon
//       Mon
//       Monday
//       Monday
//       Mo
//       Mo
//       Mo
//       Mo
//       lun.
//       lun.
//       lundi
//       lundi

Einzelne Sprachen bieten u. U. Funktionen, die den von .NET Framework bereitgestellten Funktionen entsprechen oder diese ergänzen. Visual Basic umfasst beispielsweise zwei derartige Funktionen:

  • Weekday, die eine Zahl zurückgibt, die den Wochentag eines bestimmten Datums angibt. Dabei wird davon ausgegangen, dass erste Tag der Woche dem Wert 1 entspricht, während die DateTime.DayOfWeek-Eigenschaft vom Wert 0 ausgeht.

  • WeekdayName, die den Namen der Woche in der aktuellen Kultur zurückgibt, die der Zahl eines bestimmten Wochentags entspricht.

Das folgende Beispiel veranschaulicht der Verwendung der Visual Basic-Funktionen Weekday und WeekdayName.

Dim dateValue As Date = #6/11/2008#

' Get weekday number using Visual Basic Weekday function
Console.WriteLine(Weekday(dateValue))                 ' Displays 4
' Compare with .NET DateTime.DayOfWeek property
Console.WriteLine(dateValue.DayOfWeek)                ' Displays 3

' Get weekday name using Weekday and WeekdayName functions
Console.WriteLine(WeekdayName(Weekday(dateValue)))    ' Displays Wednesday

' Change culture to de-DE
Dim originalCulture As CultureInfo = Thread.CurrentThread.CurrentCulture
Thread.CurrentThread.CurrentCulture = New CultureInfo("de-DE")
' Get weekday name using Weekday and WeekdayName functions
Console.WriteLine(WeekdayName(Weekday(dateValue)))   ' Displays Donnerstag

' Restore original culture
Thread.CurrentThread.CurrentCulture = originalCulture   

Sie können den von der DateTime.DayOfWeek-Eigenschaft zurückgegebenen Wert auch verwenden, um den Namen des Wochentags eines bestimmten Datums abzurufen. Dies erfordert nur einen Anruf der ToString-Methode für den von der Eigenschaft zurückgegebenen DayOfWeek-Wert. Durch dieses Verfahren wird jedoch kein lokalisierter Wochentagsname für die aktuelle Kultur erzeugt, wie aus dem folgenden Beispiel ersichtlich.

' Change current culture to fr-FR
Dim originalCulture As CultureInfo = Thread.CurrentThread.CurrentCulture
Thread.CurrentThread.CurrentCulture = New CultureInfo("fr-FR")

Dim dateValue As Date = #6/11/2008#
' Display the DayOfWeek string representation
Console.WriteLine(dateValue.DayOfWeek.ToString())     ' Displays Wednesday
' Restore original current culture
Thread.CurrentThread.CurrentCulture = originalCulture
// Change current culture to fr-FR
CultureInfo originalCulture = Thread.CurrentThread.CurrentCulture;
Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-FR");

DateTime dateValue = new DateTime(2008, 6, 11);
// Display the DayOfWeek string representation
Console.WriteLine(dateValue.DayOfWeek.ToString());   // Displays Wednesday
// Restore original current culture
Thread.CurrentThread.CurrentCulture = originalCulture;

Kompilieren des Codes

Für diese Beispiele gelten u. U. folgende Voraussetzungen:

  • Die folgenden Namespaces müssen importiert werden:

    • Der System.Globalization-Namespace.

    • Der System.Threading-Namespace, der zum Kompilieren des DayOfWeek-Beispiels und des Visual Basic-Beispiels erforderlich ist, in dem die Weekday-Funktion und die WeekdayName-Funktion veranschaulicht wird.

Außerdem ist Folgendes für die Beispiele erforderlich:

  • Jedem Projekt, dem die Codebeispiele hinzugefügt werden, muss ein Verweis auf System.Core.dll hinzugefügt werden.

Siehe auch

Konzepte

Durchführen von Formatierungsvorgängen

Datums- und Uhrzeitstandardformatzeichenfolgen

Benutzerdefinierte und DateTime-Formatzeichenfolgen