Sdílet prostřednictvím


Postupy: Extrahovat den v týdnu ze specifického data

.NET Framework usnadňuje určení pořadového čísla dne v týdnu pro konkrétní datum a zobrazení lokalizovaného názvu dne v týdnu pro konkrétní datum. Výčtová hodnota označující den v týdnu odpovídající konkrétnímu datu je k dispozici prostřednictvím vlastnosti DayOfWeek nebo DayOfWeek. Získávání názvu dne v týdnu je naopak operace formátování, kterou lze provést voláním metody pro formátování, jako je například metoda ToString hodnoty data a času nebo metoda String.Format. Toto téma ukazuje, jak provést tyto operace formátování.

Chcete-li extrahovat číslo označující den v týdnu z určitého data

  1. Pokud pracujete s řetězcovou reprezentací data, převeďte ji na hodnotu DateTime nebo DateTimeOffset pomocí statické metody DateTime.Parse nebo DateTimeOffset.Parse.

  2. Použijte vlastnost DateTime.DayOfWeek nebo DateTimeOffset.DayOfWeek pro získání hodnoty DayOfWeek, která udává den v týdnu.

  3. V případě potřeby přetypujte (v jazyce C#) nebo převeďte (v jazyce Visual Basic) hodnotu DayOfWeek na celé číslo.

Následující příklad zobrazí celé číslo, které představuje den v týdnu z řetězcového vyjádření data.

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

Chcete-li extrahovat zkratku názvu dne v týdnu z určitého data

  1. Pokud pracujete s řetězcovou reprezentací data, převeďte ji na hodnotu DateTime nebo DateTimeOffset pomocí statické metody DateTime.Parse nebo DateTimeOffset.Parse.

  2. Zkratku názvu dne v týdnu můžete extrahovat z aktuální jazykové verze nebo konkrétní jazykové verze:

    1. Chcete-li extrahovat zkrácený název dne v týdnu aktuální jazykové verze, zavolejte instanční metodu DateTime.ToString(String) nebo DateTimeOffset.ToString(String) dané hodnoty data a času a předejte řetězec "ddd" jako parametr format. Následující příklad ukazuje volání metody ToString(String).

      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. Chcete-li extrahovat zkrácený název dne v týdnu konkrétní jazykové verze, zavolejte instanční metodu DateTime.ToString(String, IFormatProvider) nebo DateTimeOffset.ToString(String, IFormatProvider) dané hodnoty data a času. Předejte řetězec "ddd" jako parametr format. Předejte objekt CultureInfo nebo objekt DateTimeFormatInfo, který představuje jazykovou verzi, jejíž název dne v týdnu chcete získat jako parametr provider. Následující kód ilustruje volání metody ToString(String, IFormatProvider) za použití objektu CultureInfo, který představuje jazykovou verzi fr-FR.

      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.
      

Chcete-li extrahovat úplný název dne v týdnu z určitého data

  1. Pokud pracujete s řetězcovou reprezentací data, převeďte ji na hodnotu DateTime nebo DateTimeOffset pomocí statické metody DateTime.Parse nebo DateTimeOffset.Parse.

  2. Úplný název dne v týdnu můžete extrahovat z aktuální jazykové verze nebo konkrétní jazykové verze:

    1. Chcete-li extrahovat úplný název dne v týdnu aktuální jazykové verze, zavolejte instanční metodu DateTime.ToString(String) nebo DateTimeOffset.ToString(String) dané hodnoty data a času a předejte řetězec "dddd" jako parametr format. Následující příklad ukazuje volání metody ToString(String).

      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. Chcete-li extrahovat úplný název dne v týdnu konkrétní jazykové verze, zavolejte instanční metodu DateTime.ToString(String, IFormatProvider) nebo DateTimeOffset.ToString(String, IFormatProvider) dané hodnoty data a času. Předejte řetězec "dddd" jako parametr format. Předejte objekt CultureInfo nebo objekt DateTimeFormatInfo, který představuje jazykovou verzi, jejíž název dne v týdnu chcete získat jako parametr provider. Následující kód ilustruje volání metody ToString(String, IFormatProvider) za použití objektu CultureInfo, který představuje jazykovou verzi es-ES.

      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.
      

Příklad

V příkladu je znázorněno volání vlastnosti DateTime.DayOfWeek a DateTimeOffset.DayOfWeek a metody DateTime.ToString a DateTimeOffset.ToString pro získání čísla, které představuje den v týdnu, zkráceného názvu dne v týdnu a úplného názvu dne v týdnu z konkrétního data.

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

Jednotlivé jazyky mohou poskytovat funkce, které duplikují nebo doplňují funkce poskytované .NET Framework. Visual Basic například obsahuje dvě takovéto funkce:

  • Weekday vracející číslo, které označuje den v týdnu určitého data. Funkce považuje za pořadové číslo prvního dne jedničku, zatímco vlastnost DateTime.DayOfWeek považuje nulu.

  • WeekdayName vracející název dne v týdnu aktuální jazykové verze, který odpovídá konkrétnímu číslu dne v týdnu.

Následující příklad ukazuje použití funkcí Weekday a WeekdayName jazyka Visual Basic.

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   

Můžete také použít hodnotu vrácenou vlastností DateTime.DayOfWeek pro získání názvu dne v týdnu určitého data. To pouze vyžaduje zavolání metody ToString na hodnotu vrácenou vlastností DayOfWeek. Tato technika však nevytvoří lokalizovaný název dne v týdnu pro aktuální jazykovou verzi, jak je znázorněno v následujícím příkladu.

' 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;

Probíhá kompilace kódu

Tyto příklady mohou vyžadovat:

  • Aby byly importovány následující obory názvů:

Příklady také vyžadují:

  • Aby byl přidán odkaz na System.Core.dll do jakéhokoli projektu, ke kterému jsou ukázkové příklady kódu přidány.

Viz také

Koncepty

Provádění operací formátování

Standardní formátovací řetězce data a času

Vlastní formátovací řetězce data a času