Vorgehensweise: Extrahieren des Wochentags aus einem bestimmten DatumHow to: Extract the Day of the Week from a Specific Date

Mit .NET Framework ist es einfach, den Wochentag für ein bestimmtes Datum festzulegen und den lokalisierten Namen eines Wochentags für ein bestimmtes Datum anzuzeigen.The .NET Framework makes it easy to determine the ordinal day of the week for a particular date, and to display the localized weekday name for a particular date. Ein Aufzählungswert, der den einem bestimmten Datum entsprechenden Wochentag anzeigt, ist über die DayOfWeek- oder die DayOfWeek-Eigenschaft verfügbar.An enumerated value that indicates the day of the week corresponding to a particular date is available from the DayOfWeek or DayOfWeek property. Dagegen ist das Abrufen des Namens eines Wochentags ein Formatierungsvorgang, der durch das Aufrufen einer Formatierungsmethode ausgeführt werden kann, wie z. B. der ToString-Methode eines Datums- oder Zeitwertes oder der String.Format-Methode.In contrast, retrieving the weekday name is a formatting operation that can be performed by calling a formatting method, such as a date and time value's ToString method or the String.Format method. In diesem Thema wird gezeigt, wie diese Formatierungsvorgänge ausgeführt werden.This topic shows how to perform these formatting operations.

Extrahieren einer Zahl, die den Wochentag anzeigt, aus einem bestimmten DatumTo extract a number indicating the day of the week from a specific date

  1. Wenn Sie mit der Zeichenfolgendarstellung eines Datums arbeiten, konvertieren Sie sie mithilfe der statischen DateTime-Methode oder DateTimeOffset-Methode in einen DateTime.Parse-Wert oder einen DateTimeOffset.Parse-Wert.If you are working with the string representation of a date, convert it to a DateTime or a DateTimeOffset value by using the static DateTime.Parse or DateTimeOffset.Parse method.

  2. Verwenden Sie die DateTime.DayOfWeek- oder die DateTimeOffset.DayOfWeek-Eigenschaft, um einen DayOfWeek-Wert abzurufen, der den Wochentag anzeigt.Use the DateTime.DayOfWeek or DateTimeOffset.DayOfWeek property to retrieve a DayOfWeek value that indicates the day of the week.

  3. Falls nötig, wandeln Sie den DayOfWeek-Wert in eine Ganzzahl um (in C#) oder konvertieren Sie ihn (in Visual Basic).If necessary, cast (in C#) or convert (in Visual Basic) the DayOfWeek value to an integer.

Das folgende Beispiel zeigt eine Ganzzahl, die den Wochentag eines bestimmten Datums anzeigt.The following example displays an integer that represents the day of the week of a specific date.

using System;

public class Example
{
   public static void Main()
   {
      DateTime dateValue = new DateTime(2008, 6, 11);
      Console.WriteLine((int) dateValue.DayOfWeek);      
   }
}
// The example displays the following output:
//       3
Module Example
   Public Sub Main()
      Dim dateValue As Date = #6/11/2008#
      Console.WriteLine(dateValue.DayOfWeek)           
   End Sub
End Module
' The example displays the following output:
'    3

Extrahieren des abgekürzten Wochentagsnamens aus einem bestimmten DatumTo extract the abbreviated weekday name from a specific date

  1. Wenn Sie mit der Zeichenfolgendarstellung eines Datums arbeiten, konvertieren Sie sie mithilfe der statischen DateTime-Methode oder DateTimeOffset-Methode in einen DateTime.Parse-Wert oder einen DateTimeOffset.Parse-Wert.If you are working with the string representation of a date, convert it to a DateTime or a DateTimeOffset value by using the static DateTime.Parse or DateTimeOffset.Parse method.

  2. Sie können den abgekürzten Wochentagsnamen der aktuellen Kultur oder einer bestimmten Kultur extrahieren:You can extract the abbreviated weekday name of the current culture or of a specific culture:

    1. Um den abgekürzten Wochentagsnamen der aktuellen Kultur zu extrahieren, rufen Sie die DateTime.ToString(String)- oder DateTimeOffset.ToString(String)-Instanzmethode des Datums- oder Zeitwerts auf und übergeben Sie die Zeichenfolge "ddd" als format-Parameter.To extract the abbreviated weekday name for the current culture, call the date and time value's DateTime.ToString(String) or DateTimeOffset.ToString(String) instance method, and pass the string "ddd" as the format parameter. Im folgenden Beispiel wird das Aufrufen der ToString(String)-Methode veranschaulicht.The following example illustrates the call to the ToString(String) method.

      using System;
      
      public class Example
      {
         public static void Main()
         {
            DateTime dateValue = new DateTime(2008, 6, 11);
            Console.WriteLine(dateValue.ToString("ddd"));   
         }
      }
      // The example displays the following output:
       //       Wed
      
      Module Example
         Public Sub Main()
            Dim dateValue As Date = #6/11/2008#
            Console.WriteLine(dateValue.ToString("ddd"))    
         End Sub
      End Module
      ' The example displays the following output:
      '       Wed
      
    2. Um den abgekürzten Wochentagsnamen einer bestimmten Kultur zu extrahieren, rufen Sie die DateTime.ToString(String, IFormatProvider)- oder DateTimeOffset.ToString(String, IFormatProvider)-Instanzmethode des Datums- oder Zeitwerts auf.To extract the abbreviated weekday name for a specific culture, call the date and time value’s DateTime.ToString(String, IFormatProvider) or DateTimeOffset.ToString(String, IFormatProvider) instance method. Übergeben Sie die Zeichenfolge "ddd" als format-Parameter.Pass the string "ddd" as the format parameter. Übergeben Sie entweder ein CultureInfo- oder ein DateTimeFormatInfo-Objekt, das die Kultur darstellt, deren Wochentagsnamen Sie abrufen wollen, als provider-Parameter.Pass either a CultureInfo or a DateTimeFormatInfo object that represents the culture whose weekday name you want to retrieve as the provider parameter. Der folgende Code veranschaulicht einen Aufruf der ToString(String, IFormatProvider)-Methode mit einem CultureInfo-Objekt, das die fr-FR-Kultur darstellt.The following code illustrates a call to the ToString(String, IFormatProvider) method using a CultureInfo object that represents the fr-FR culture.

      using System;
      using System.Globalization;
      
      public class Example
      {
         public static void Main()
         {
            DateTime dateValue = new DateTime(2008, 6, 11);
            Console.WriteLine(dateValue.ToString("ddd", 
                              new CultureInfo("fr-FR")));    
         }
      }
      // The example displays the following output:
      //       mer.  
      
      Imports System.Globalization
      
      Module Example
         Public Sub Main()
            Dim dateValue As Date = #6/11/2008#
            Console.WriteLine(dateValue.ToString("ddd", 
                              New CultureInfo("fr-FR")))    
         End Sub
      End Module
      ' The example displays the following output:
      '       mer.
      

Extrahieren des vollen Wochentagsnamens aus einem bestimmten DatumTo extract the full weekday name from a specific date

  1. Wenn Sie mit der Zeichenfolgendarstellung eines Datums arbeiten, konvertieren Sie sie mithilfe der statischen DateTime-Methode oder DateTimeOffset-Methode in einen DateTime.Parse-Wert oder einen DateTimeOffset.Parse-Wert.If you are working with the string representation of a date, convert it to a DateTime or a DateTimeOffset value by using the static DateTime.Parse or DateTimeOffset.Parse method.

  2. Sie können den vollen Wochentagsnamen der aktuellen Kultur oder einer bestimmten Kultur extrahieren:You can extract the full weekday name of the current culture or of a specific culture:

    1. Um den Wochentagsnamen der aktuellen Kultur zu extrahieren, rufen Sie die DateTime.ToString(String)- oder DateTimeOffset.ToString(String)-Instanzmethode des Datums- oder Zeitwerts auf und übergeben Sie die Zeichenfolge "dddd" als format-Parameter.To extract the weekday name for the current culture, call the date and time value’s DateTime.ToString(String) or DateTimeOffset.ToString(String) instance method, and pass the string "dddd" as the format parameter. Im folgenden Beispiel wird das Aufrufen der ToString(String)-Methode veranschaulicht.The following example illustrates the call to the ToString(String) method.

      using System;
      
      public class Example
      {
         public static void Main()
         {
            DateTime dateValue = new DateTime(2008, 6, 11);
            Console.WriteLine(dateValue.ToString("dddd"));    
         }
      }
      // The example displays the following output:
      //       Wednesday
      
      Module Example
         Public Sub Main()
            Dim dateValue As Date = #6/11/2008#
            Console.WriteLine(dateValue.ToString("dddd"))
         End Sub
      End Module
      ' The example displays the following output:
      '       Wednesday
      
    2. Um den Wochentagsnamen einer bestimmten Kultur zu extrahieren, rufen Sie die DateTime.ToString(String, IFormatProvider)- oder DateTimeOffset.ToString(String, IFormatProvider)-Instanzmethode des Datums- oder Zeitwerts auf.To extract the weekday name for a specific culture, call the date and time value’s DateTime.ToString(String, IFormatProvider) or DateTimeOffset.ToString(String, IFormatProvider) instance method. Übergeben Sie die Zeichenfolge "dddd" als format-Parameter.Pass the string "dddd" as the format parameter. Übergeben Sie entweder ein CultureInfo- oder ein DateTimeFormatInfo-Objekt, das die Kultur darstellt, deren Wochentagsnamen Sie abrufen wollen, als provider-Parameter.Pass either a CultureInfo or a DateTimeFormatInfo object that represents the culture whose weekday name you want to retrieve as the provider parameter. Der folgende Code veranschaulicht einen Aufruf der ToString(String, IFormatProvider)-Methode mit einem CultureInfo-Objekt, das die es-ES-Kultur darstellt.The following code illustrates a call to the ToString(String, IFormatProvider) method using a CultureInfo object that represents the es-ES culture.

      using System;
      using System.Globalization;
      
      public class Example
      {
         public static void Main()
         {
            DateTime dateValue = new DateTime(2008, 6, 11);
            Console.WriteLine(dateValue.ToString("dddd", 
                              new CultureInfo("es-ES")));    
         }
      }
      // The example displays the following output:
      //       miércoles.
      
      Imports System.Globalization
      
      Module Example
         Public Sub Main()
            Dim dateValue As Date = #6/11/2008#
            Console.WriteLine(dateValue.ToString("dddd", _
                              New CultureInfo("es-ES")))     
         End Sub
      End Module
      ' The example displays the following output:
      '       miércoles.
      

BeispielExample

Das Beispiel veranschaulicht Aufrufe der DateTime.DayOfWeek- und DateTimeOffset.DayOfWeek-Eigenschaften sowie der DateTime.ToString- und der DateTimeOffset.ToString-Methode zum Abrufen der Nummer, die den Wochentag, den abgekürzten Wochentagsnamen und den vollen Wochentagsnamen für ein bestimmtes Datum darstellt.The example illustrates calls to the DateTime.DayOfWeek and DateTimeOffset.DayOfWeek properties and the DateTime.ToString and DateTimeOffset.ToString methods to retrieve the number that represents the day of the week, the abbreviated weekday name, and the full weekday name for a particular date.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      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:
//       1
//       1
//       Mon
//       Mon
//       Monday
//       Monday
//       Mo
//       Mo
//       Mo
//       Mo
//       lun.
//       lun.
//       lundi
//       lundi
Imports System.Globalization

Module Example
   Public Sub Main()
      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
   End Sub
End Module
' 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 verfügen ggf. über Funktionen, die die von .NET Framework zur Verfügung gestellte Funktionalität duplizieren oder ergänzen.Individual languages may provide functionality that duplicates or supplements the functionality provided by the .NET Framework. Visual Basic verfügt beispielsweise über zwei solcher Funktionen:For example, Visual Basic includes two such functions:

  • Weekday, die eine Zahl zurückgibt, die den Wochentag eines bestimmten Datums anzeigt.Weekday, which returns a number that indicates the day of the week of a particular date. Sie betrachtet den Ordinalwert des ersten Wochentags als eins, während die DateTime.DayOfWeek-Eigenschaft ihn als null betrachtet.It considers the ordinal value of the first day of the week to be one, whereas the DateTime.DayOfWeek property considers it to be zero.

  • WeekdayName, die den Namen des Wochentags in der aktuellen Kultur zurückgibt, der der Nummer eines bestimmten Wochentags entspricht.WeekdayName, which returns the name of the week in the current culture that corresponds to a particular weekday number.

Das folgende Beispiel veranschaulicht die Verwendung der Weekday- und WeekdayName-Funktionen in Visual Basic.The following example illustrates the use of the Visual Basic Weekday and WeekdayName functions.

Imports System.Globalization
Imports System.Threading

Module Example
   Public Sub Main()
      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   
   End Sub
End Module

Sie können auch den von der DateTime.DayOfWeek-Eigenschaft zurückgegebenen Wert verwenden, um den Wochentagsnamen eines bestimmten Datums abzurufen.You can also use the value returned by the DateTime.DayOfWeek property to retrieve the weekday name of a particular date. Dies erfordert lediglich einen Aufruf der ToString-Methode auf dem von der Eigenschaft zurückgegebenen DayOfWeek-Wert.This requires only a call to the ToString method on the DayOfWeek value returned by the property. Diese Vorgehensweise erzeugt jedoch nicht den lokalisierten Wochentagsnamen für die aktuelle Kultur, wie das folgende Beispiel zeigt.However, this technique does not produce a localized weekday name for the current culture, as the following example illustrates.

using System;
using System.Globalization;
using System.Threading;

public class Example
{
   public static void Main()
   {
      // 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());   
      // Restore original current culture
      Thread.CurrentThread.CurrentCulture = originalCulture;
   }
}
// The example displays the following output:
//       Wednesday
Imports System.Globalization
Imports System.Threading

Module Example
   Public Sub Main()
      ' 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())     
      ' Restore original current culture
      Thread.CurrentThread.CurrentCulture = originalCulture
   End Sub
End Module
' The example displays the following output:
'       Wednesday

Siehe auchSee also