Freigeben über


Verarbeiten von Zeichenfolgen für Datum und Uhrzeit

Analysemethoden konvertieren die Zeichenfolgendarstellung eines Datums und einer Uhrzeit in ein entsprechendes DateTime-Objekt. Die Parse-Methode und die TryParse-Methode konvertieren alle gemeinsamen Darstellungen eines Datums und einer Uhrzeit. Die ParseExact-Methode und die TryParseExact-Methode konvertieren eine Zeichenfolgendarstellung, die genau mit dem von einer Formatzeichenfolge für Datum und Uhrzeit angegebenen Muster übereinstimmt.

Die Verarbeitung wird durch die Eigenschaften eines Formatanbieters beeinflusst, der Informationen wie die Trennzeichen für Datumsangaben und Zeitangaben sowie die Namen von Monaten, Tagen und Zeiträumen bereitstellt. Der Formatanbieter ist das aktuelle DateTimeFormatInfo-Objekt, das implizit durch die aktuelle Threadkultur oder explizit durch den IFormatProvider-Parameter einer Analysemethode bereitgestellt wird. Geben Sie für den IFormatProvider-Parameter ein CultureInfo-Objekt an, das eine Kultur oder ein DateTimeFormatInfo-Objekt darstellt.

Die Zeichenfolgendarstellung eines zu verarbeitenden Datums muss den Monat und zumindest einen Tag oder ein Jahr enthalten. Die Zeichenfolgendarstellung einer Uhrzeit muss die Stunde und zumindest die Minuten oder den AM/PM-Indikator enthalten. Bei der Verarbeitung werden jedoch Standardwerte für weggelassene Komponenten bereitgestellt, sofern dies möglich ist. Für ein fehlendes Datum wird standardmäßig das aktuelle Datum angegeben, für ein fehlendes Jahr das aktuelle Jahr und für einen fehlenden Tag eines Monats der erste Tag des Monats. Für eine fehlende Uhrzeit wird standardmäßig Mitternacht angegeben.

Falls die Zeichenfolgendarstellung nur eine Uhrzeit angibt, wird bei der Verarbeitung ein DateTime-Objekt zurückgegeben, dessen Eigenschaften Year, Month und Day auf die entsprechenden Werte der Today-Eigenschaft festgelegt sind. Ist jedoch die NoCurrentDateDefault-Konstante in der Analysemethode angegeben, werden die Eigenschaften für Jahr, Monat und Tag auf den Wert 1 festgelegt.

Falls die Zeitzone in der Zeichenfolgendarstellung einer Uhrzeit weggelassen wurde, wird bei der Verarbeitung ein DateTime-Objekt zurückgegeben, dessen Kind-Eigenschaft auf Unspecified festgelegt ist. Wurde die Zeitzone z. B. durch den Zeitzonenoffsetwert "-07:00" angegeben, wird bei der Verarbeitung ein DateTime-Objekt zurückgegeben, dessen Kind-Eigenschaft auf Local festgelegt und dessen Wert an die lokale Zeitzone des Computers angepasst wurde. Sie können dieses Verhalten ändern, indem Sie gemeinsam mit der Analysemethode eine DateTimeStyles-Konstante verwenden.

Mit dem Formatanbieter werden auch mehrdeutige numerische Daten interpretiert. So ist beispielsweise nicht eindeutig, bei welchen Komponenten des durch die Zeichenfolge "02/03/04" dargestellten Datums es sich um den Monat, den Tag und das Jahr handelt. In diesem Fall werden die Komponenten entsprechend der Reihenfolge ähnlicher Datumsformate im Formatanbieter interpretiert.

Parse

Der folgende Beispielcode veranschaulicht die Verwendung der Parse-Methode, um eine Zeichenfolge in eine DateTime zu konvertieren. Um die Verarbeitung durchzuführen, wird die Kultur verwendet, die dem aktuellen Thread zugeordnet ist. Wenn die der aktuellen Kultur zugeordnete CultureInfo die eingegebene Zeichenfolge nicht verarbeiten kann, wird eine FormatException ausgelöst.

Dim MyString As String = "Jan 1, 2002"
Dim MyDateTime As DateTime = DateTime.Parse(MyString)
Console.WriteLine(MyDateTime)
string MyString = "Jan 1, 2002";
DateTime MyDateTime = DateTime.Parse(MyString);
Console.WriteLine(MyDateTime);

Sie können auch eine CultureInfo angeben, die auf eine der durch dieses Objekt definierten Kulturen festgelegt wurde. Im folgenden Beispielcode wird ein Formatanbieter verwendet, um eine deutsche Zeichenfolge in eine DateTime umzuwandeln. Eine CultureInfo, die die Kultur de-DE repräsentiert, wird zusammen mit der verarbeiteten Zeichenfolge definiert und übergeben, um eine erfolgreiche Verarbeitung dieser bestimmten Zeichenfolge zu gewährleisten. Dadurch wird die unter CurrentCulture des CurrentThread vorhandene Einstellung irrelevant.

Imports System.Globalization

Dim MyCultureInfo As CultureInfo = new CultureInfo("de-DE")
Dim MyString As String = "12 Juni 2002"
Dim MyDateTime As DateTime = DateTime.Parse(MyString, MyCultureInfo)
Console.WriteLine(MyDateTime)
using System.Globalization;

CultureInfo MyCultureInfo = new CultureInfo("de-DE");
string MyString = "12 Juni 2002";
DateTime MyDateTime = DateTime.Parse(MyString, MyCultureInfo);
Console.WriteLine(MyDateTime);

Im folgenden Beispielcode wird die DateTimeStyles-Enumeration verwendet, um festzulegen, dass die aktuellen Informationen zu Datum und Uhrzeit nicht in Felder der DateTime eingetragen werden, die durch die Zeichenfolge nicht definiert wurden.

Imports System.Globalization

Dim MyCultureInfo As CultureInfo = new CultureInfo("de-DE")
Dim MyString As String = "12 Juni 2002"
Dim MyDateTime As DateTime = DateTime.Parse(MyString, MyCultureInfo, DateTimeStyles.NoCurrentDateDefault)
Console.WriteLine(MyDateTime)
using System.Globalization;

CultureInfo MyCultureInfo = new CultureInfo("de-DE");
string MyString = "12 Juni 2002";
DateTime MyDateTime = DateTime.Parse(MyString, MyCultureInfo, DateTimeStyles.NoCurrentDateDefault);
Console.WriteLine(MyDateTime);

ParseExact

Die ParseExact-Methode konvertiert nur das angegebene Zeichenfolgenmuster in eine DateTime. Wird an diese Methode eine Zeichenfolge übergeben, die nicht diesem Muster entspricht, wird eine FormatException ausgelöst. Sie können einen der gebräuchlichen Formatbezeichner für Datum und Uhrzeit oder eine begrenzte Kombination benutzerdefinierter Formatbezeichner angeben. Mithilfe der benutzerdefinierten Formatbezeichner können Sie Zeichenfolgen mit benutzerdefinierter Erkennung konstruieren. Weitere Informationen zu den Bezeichnern finden Sie im Abschnitt über Formatzeichenfolgen für Datum und Uhrzeit.

Im folgenden Codebeispiel wird der ParseExact-Methode ein Zeichenfolgenobjekt zur Verarbeitung übergeben, gefolgt von einem Formatbezeichner und einem CultureInfo-Objekt. Diese ParseExact-Methode kann nur Zeichenfolgen im langen Datumsformat verarbeiten, das in der Kultur en-US verwendet wird.

Imports System.Globalization

Dim MyCultureInfo As CultureInfo = new CultureInfo("en-US")
Dim MyString As String = "Tuesday, April 10, 2001"
Dim MyDateTime As DateTime = DateTime.ParseExact(MyString, "D", MyCultureInfo)
Console.WriteLine(MyDateTime)
using System.Globalization;

CultureInfo MyCultureInfo = new CultureInfo("en-US");
string MyString = " Tuesday, April 10, 2001";
DateTime MyDateTime = DateTime.ParseExact(MyString, "D", MyCultureInfo);
Console.WriteLine(MyDateTime);

Siehe auch

Weitere Ressourcen

Verarbeiten von Zeichenfolgen
Formatierung von Typen
Konvertieren von Typen