Gewusst wie: Konvertieren einer Zeichenfolge in einen DateTime-Wert (C#-Programmierhandbuch)How to: Convert a String to a DateTime (C# Programming Guide)

Es ist in Programmen üblich, Benutzern die Eingabe von Datumsangaben als Zeichenfolgenwerte zu ermöglichen.It is common for programs to enable users to enter dates as string values. Um ein zeichenfolgenbasiertes Datum in ein System.DateTime -Objekt zu konvertieren, können Sie die Convert.ToDateTime(String) -Methode oder die statische DateTime.Parse(String) -Methode verwenden, wie im folgenden Beispiel dargestellt.To convert a string-based date to a System.DateTime object, you can use the Convert.ToDateTime(String) method or the DateTime.Parse(String) static method, as shown in the following example.

Kultur.Culture. Datumsangaben werden weltweit je nach Kultur unterschiedlich geschrieben.Different cultures in the world write date strings in different ways. In den USA entspricht 01/20/2008 z. B. dem 20. Januar 2008.For example, in the US 01/20/2008 is January 20th, 2008. In Frankreich wird dadurch eine InvalidFormatException ausgelöst.In France this will throw an InvalidFormatException. Dies liegt daran, dass Datumsangaben in Frankreich als Tag/Monat/Jahr und in den USA als Monat/Tag/Jahr gelesen werden.This is because France reads date-times as Day/Month/Year, and in the US it is Month/Day/Year.

Daher wird eine Zeichenfolge wie 20/01/2008 in Frankreich als 20. Januar 2008 interpretiert, während sie in den USA eine InvalidFormatException auslöst.Consequently, a string like 20/01/2008 will parse to January 20th, 2008 in France, and then throw an InvalidFormatException in the US.

Zum Ermitteln der aktuellen Kultureinstellungen können Sie System.Globalization.CultureInfo.CurrentCulture verwenden.To determine your current culture settings, you can use System.Globalization.CultureInfo.CurrentCulture.

Im Folgenden finden Sie ein einfaches Beispiel für das Konvertieren einer Zeichenfolge in dateTime.See the example below for a simple example of converting a string to dateTime.

Weitere Beispiele für Datumszeichenfolgen finden Sie unter Convert.ToDateTime(String).For more examples of date strings, see Convert.ToDateTime(String).

string dateTime = "01/08/2008 14:50:50.42";  
            DateTime dt = Convert.ToDateTime(dateTime);  
            Console.WriteLine("Year: {0}, Month: {1}, Day: {2}, Hour: {3}, Minute: {4}, Second: {5}, Millisecond: {6}",  
                              dt.Year, dt.Month, dt.Day, dt.Hour, dt.Minute, dt.Second, dt.Millisecond);  
            // Specify exactly how to interpret the string.  
            IFormatProvider culture = new System.Globalization.CultureInfo("fr-FR", true);  

            // Alternate choice: If the string has been input by an end user, you might    
            // want to format it according to the current culture:   
            // IFormatProvider culture = System.Threading.Thread.CurrentThread.CurrentCulture;  
            DateTime dt2 = DateTime.Parse(dateTime, culture, System.Globalization.DateTimeStyles.AssumeLocal);  
            Console.WriteLine("Year: {0}, Month: {1}, Day: {2}, Hour: {3}, Minute: {4}, Second: {5}, Millisecond: {6}",  
                              dt2.Year, dt2.Month, dt2.Day, dt2.Hour, dt2.Minute, dt2.Second, dt2.Millisecond  
/* Output (assuming first culture is en-US and second is fr-FR):  
    Year: 2008, Month: 1, Day: 8, Hour: 14, Minute: 50, Second: 50, Millisecond: 420  
Year: 2008, Month: 8, Day: 1, Hour: 14, Minute: 50, Second: 50, Millisecond: 420  
Press any key to continue . . .  
 */  

BeispielExample

// Date strings are interpreted according to the current culture.
// If the culture is en-US, this is interpreted as "January 8, 2008",
// but if the user's computer is fr-FR, this is interpreted as "August 1, 2008"
string date = "01/08/2008";
DateTime dt = Convert.ToDateTime(date);            
Console.WriteLine("Year: {0}, Month: {1}, Day: {2}", dt.Year, dt.Month, dt.Day);

// Specify exactly how to interpret the string.
IFormatProvider culture = new System.Globalization.CultureInfo("fr-FR", true);

// Alternate choice: If the string has been input by an end user, you might 
// want to format it according to the current culture:
// IFormatProvider culture = System.Threading.Thread.CurrentThread.CurrentCulture;
DateTime dt2 = DateTime.Parse(date, culture, System.Globalization.DateTimeStyles.AssumeLocal);
Console.WriteLine("Year: {0}, Month: {1}, Day {2}", dt2.Year, dt2.Month, dt2.Day);

/* Output (assuming first culture is en-US and second is fr-FR):
    Year: 2008, Month: 1, Day: 8
    Year: 2008, Month: 8, Day 1
 */

Siehe auchSee Also

ZeichenfolgenStrings