Postupy: Extrahování dne v týdnu z konkrétního data
.NET usnadňuje určení pořadového 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, která označuje den v týdnu odpovídající určitému datu, je k dispozici z DayOfWeek dané nebo DayOfWeek vlastnosti. Naproti tomu načtení názvu dne v týdnu je operace formátování, kterou lze provést voláním metody formátování, jako je metoda String.Format data a času nebo ToString
metoda. Tento článek ukazuje, jak provádět tyto operace formátování.
Extrahování čísla označujícího den v týdnu
Pomocí statické DateTime.Parse metody nebo DateTimeOffset.Parse metody převeďte řetězcovou reprezentaci data na DateTime hodnotu nebo hodnotu DateTimeOffset .
DateTime.DayOfWeek Pomocí vlastnosti můžete DateTimeOffset.DayOfWeek načíst DayOfWeek hodnotu, která označuje den v týdnu.
V případě potřeby přetypujte (v jazyce C#) nebo převeďte hodnotu (v jazyce Visual Basic) DayOfWeek na celé číslo.
Následující příklad zobrazí celé číslo, které představuje den v týdnu konkrétního data:
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
Extrahování zkráceného názvu dne v týdnu
Pomocí statické DateTime.Parse metody nebo DateTimeOffset.Parse metody převeďte řetězcovou reprezentaci data na DateTime hodnotu nebo hodnotu DateTimeOffset .
Můžete extrahovat zkrácený název dne v týdnu aktuální jazykové verze nebo konkrétní jazykové verze:
Chcete-li extrahovat zkrácený název dne v týdnu pro aktuální jazykovou verzi, zavolejte hodnotu data a času DateTime.ToString(String) nebo metodu
format
instance a předejte řetězecddd
jako DateTimeOffset.ToString(String) parametr. Následující příklad znázorňuje volání ToString(String) metody: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
Chcete-li extrahovat zkrácený název dne v týdnu pro konkrétní jazykovou verzi, zavolejte metodu data DateTime.ToString(String, IFormatProvider) a času nebo DateTimeOffset.ToString(String, IFormatProvider) instance. Předejte řetězec
ddd
jakoformat
parametr. Předejte objekt CultureInfo nebo DateTimeFormatInfo objekt, který představuje jazykovou verzi, jejíž název dne v týdnuprovider
chcete načíst jako parametr. Následující kód znázorňuje volání ToString(String, IFormatProvider) metody pomocí objektu CultureInfo , který představuje jazykovou verzi fr-FR: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.
Extrahování celého názvu dne v týdnu
Pomocí statické DateTime.Parse metody nebo DateTimeOffset.Parse metody převeďte řetězcovou reprezentaci data na DateTime hodnotu nebo hodnotu DateTimeOffset .
Můžete extrahovat celý název dne v týdnu aktuální jazykové verze nebo konkrétní jazykové verze:
Pokud chcete extrahovat název dne v týdnu pro aktuální jazykovou verzi, zavolejte hodnotu DateTime.ToString(String) data a času nebo DateTimeOffset.ToString(String) metodu
format
instance a předejte řetězecdddd
jako parametr. Následující příklad znázorňuje volání ToString(String) metody: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
Chcete-li extrahovat název dne v týdnu pro konkrétní jazykovou verzi, zavolejte hodnotu DateTime.ToString(String, IFormatProvider) data a času nebo DateTimeOffset.ToString(String, IFormatProvider) metodu instance. Předejte řetězec
dddd
jakoformat
parametr. Předejte objekt CultureInfo nebo DateTimeFormatInfo objekt, který představuje jazykovou verzi, jejíž název dne v týdnuprovider
chcete načíst jako parametr. Následující kód znázorňuje volání ToString(String, IFormatProvider) metody pomocí objektu CultureInfo , který představuje jazykovou verzi es-ES: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.
Příklad
Následující příklad znázorňuje volání a DateTimeOffset.DayOfWeek vlastnosti pro DateTime.DayOfWeek načtení čísla, který představuje den v týdnu pro konkrétní datum. Zahrnuje také volání metod DateTime.ToString a DateTimeOffset.ToString extrahování zkráceného názvu dne v týdnu a celého názvu dne v týdnu.
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
Jednotlivé jazyky můžou poskytovat funkce, které duplikují nebo doplňují funkce poskytované rozhraním .NET. Visual Basic například obsahuje dvě takové funkce:
Weekday
, který vrátí číslo, které označuje den v týdnu určitého data. Považuje pořadovou hodnotu prvního dne v týdnu za jednu, zatímco DateTime.DayOfWeek vlastnost se považuje za nulovou.WeekdayName
, který vrátí název týdne v aktuální jazykové verzi, která odpovídá určitému číslu v týdnu.
Následující příklad znázorňuje použití jazyka Visual Basic Weekday
a WeekdayName
funkcí:
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
Hodnotu vrácenou DateTime.DayOfWeek vlastností můžete také použít k načtení názvu dne v týdnu konkrétního data. Tento proces vyžaduje pouze volání ToString metody na DayOfWeek hodnotu vrácenou vlastností. Tato technika ale nevytvoří lokalizovaný název dne v týdnu pro aktuální jazykovou verzi, jak ukazuje následující příklad:
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