Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. |
Übersetzung
Original
|
DateTime.TryParseExact-Methode (String, String, IFormatProvider, DateTimeStyles, DateTime%)
Konvertiert die angegebene Zeichenfolgenentsprechung einer Datums- und Uhrzeitangabe unter Verwendung der Angaben über Format, kulturabhängige Formatierungsinformationen und Stil in die entsprechende DateTime. Das Format der Zeichenfolgenentsprechung muss dem angegebenen Format genau entsprechen. Die Methode gibt einen Wert zurück, der angibt, ob die Konvertierung erfolgreich abgeschlossen wurde.
Assembly: mscorlib (in mscorlib.dll)
public static bool TryParseExact( string s, string format, IFormatProvider provider, DateTimeStyles style, out DateTime result )
Parameter
- s
- Typ: System.String
Eine Zeichenfolge, die die zu konvertierende Datums- und Zeitangabe enthält.
- format
- Typ: System.String
Das erforderliche Format von s.
- provider
- Typ: System.IFormatProvider
Ein Objekt, das kulturspezifische Formatierungsinformationen zu s bereitstellt.
- style
- Typ: System.Globalization.DateTimeStyles
Eine bitweise Kombination eines oder mehrerer Enumerationswerte, die das für s zulässige Format angeben.
- result
- Typ: System.DateTime%
Diese Methode gibt bei erfolgreicher Konvertierung den DateTime-Wert zurück, der dem Datum und der Zeit in s entspricht, oder MinValue, wenn die Konvertierung nicht durchgeführt werden konnte. Die Konvertierung schlägt fehl, wenn der s-Parameter oder der format-Parameter null ist, eine leere Zeichenfolge ist oder kein Datum und keine Zeit in dem in format angegebenen Format enthält. Dieser Parameter wird nicht initialisiert übergeben.
| Ausnahme | Bedingung |
|---|---|
| ArgumentException |
styles ist kein gültiger DateTimeStyles-Wert. – oder – styles enthält eine ungültige Kombination von DateTimeStyles-Werten (z. B. AssumeLocal und AssumeUniversal). |
Die DateTime.TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime)-Methode analysiert die Zeichenfolgendarstellung eines Datums, die das durch den format-Parameter definierte Format aufweisen muss. Diese Methode ähnelt der DateTime.ParseExact(String, String, IFormatProvider, DateTimeStyles)-Methode. Der Unterschied besteht darin, dass die TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime)-Methode keine Ausnahme auslöst, wenn bei der Konvertierung ein Fehler auftritt.
Der s-Parameter enthält die zu analysierende Datums- und Uhrzeitangabe und muss das durch den format-Parameter definierte Format aufweisen. Darüber hinaus müssen die Datums-, Uhrzeit- und Zeitzonenelemente, sofern in s enthalten, in der von format angegebenen Reihenfolge aufgeführt werden. Wenn format ein Datum ohne Zeitelement definiert und die Analyseoperation erfolgreich ist, weist der daraus resultierende DateTime-Wert die Zeit Mitternacht (00:00:00) auf. Wenn format eine Uhrzeit ohne Datumselement definiert und die Analyseoperation erfolgreich ist, weist der daraus resultierende DateTime-Wert standardmäßig das Datum DateTime.Now.Date auf. Alternativ weist er das Datum DateTime.MinValue.Date auf, wenn styles die DateTimeStyles.NoCurrentDateDefault-Kennzeichnung einschließt. Der style-Parameter bestimmt, ob der s-Parameter führende, folgende oder innere Leerraumzeichen enthalten kann.
Wenn s keine Zeitzoneninformationen enthält, ist die Kind-Eigenschaft des zurückgegebenen DateTime-Objekts DateTimeKind.Unspecified. Dieses Verhalten kann durch die Verwendung des DateTimeStyles.AssumeLocal-Flags geändert werden, das einen DateTime-Wert zurückgibt, dessen Kind-Eigenschaft DateTimeKind.Local lautet, oder durch die Verwendung des DateTimeStyles.AssumeUniversal-Flags und des DateTimeStyles.AdjustToUniversal-Flags, das einen DateTime-Wert zurückgibt, dessen Kind-Eigenschaft DateTimeKind.Utc lautet. Wenn s Zeitzoneninformationen enthält, wird die Uhrzeit ggf. in die Ortszeit konvertiert und die Kind-Eigenschaft des zurückgegebenen DateTime-Objekts auf DateTimeKind.Local festgelegt. Dieses Verhalten kann mithilfe des DateTimeStyles.RoundtripKind-Flags geändert werden. In diesem Fall wird die koordinierte Weltzeit (UTC) nicht in Ortszeit konvertiert und die Kind-Eigenschaft auf DateTimeKind.Utc festgelegt.
Der format-Parameter enthält ein Muster, das dem erwarteten Format des s-Parameters entspricht. Das Muster im format-Parameter besteht aus einem oder mehreren benutzerdefinierten Formatangaben entsprechend der Tabelle Benutzerdefinierte und DateTime-Formatzeichenfolgen oder einem einzelnen Standardformatbezeichner, der ein in der Datums- und Uhrzeitstandardformatzeichenfolgen-Tabelle aufgeführtes vordefiniertes Muster bezeichnet.
Wenn Sie im benutzerdefinierten Formatmuster keine Datum- oder Zeittrennzeichen verwenden, verwenden Sie die invariante Kultur für den provider-Parameter und die längste Form für die einzelnen benutzerdefinierten Formatbezeichner. Wenn Sie z. B. Stunden im Muster angeben möchten, geben Sie die längere Form "HH" anstelle der kürzeren Form "H" an.
Hinweis
|
|---|
|
Anstatt festzulegen, dass s einem einzelnen Format entsprechen muss, damit der Analysevorgang erfolgreich verläuft, können Sie die DateTime.TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime)-Methode aufrufen und mehrere zulässige Formate angeben. Dadurch erhöht sich die Wahrscheinlichkeit, dass der Analysevorgang erfolgreich abgeschlossen wird. |
Die in s verwendeten spezifischen Symbole und Zeichenfolgen für Datum und Uhrzeit (wie die Namen der Wochentage in einer bestimmten Sprache) werden vom provider-Parameter definiert, ebenso wie das exakte Format von s, wenn format eine standardmäßige Formatbezeichner-Zeichenfolge ist. Bei dem provider-Parameter kann es sich um eines der folgenden Elemente handeln:
-
Ein CultureInfo-Objekt, mit dem die Kultur zum Interpretieren von s dargestellt wird. Das von der DateTimeFormat-Eigenschaft zurückgegebene DateTimeFormatInfo-Objekt definiert die Symbole und die Formatierung in s.
-
Ein DateTimeFormatInfo-Objekt, das das Format von Datums- und Uhrzeitwerten definiert.
-
Eine benutzerdefinierte IFormatProvider-Implementierung, deren GetFormat-Methode entweder das CultureInfo-Objekt oder das DateTimeFormatInfo-Objekt zurückgibt, das Formatierungsinformationen bereitstellt.
Wenn provider den Wert null hat, wird das CultureInfo-Objekt verwendet, das der aktuellen Kultur entspricht.
Der styles-Parameter enthält einen oder mehrere Member der DateTimeStyles-Enumeration, die bestimmen, ob und wo Leerraum, der nicht durch format definiert wird, in s erscheint, und die das exakte Verhalten des Analysevorgangs steuern. In der folgenden Tabelle wird beschrieben, wie die einzelnen Member der DateTimeStyles-Enumeration die Ausführung der TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime)-Methode beeinflussen.
|
DateTimeStyles-Member |
Beschreibungen |
|---|---|
|
Analysiert s und führt ggf. eine Konvertierung in UTC durch. Wenn s einen Zeitzonenoffset enthält oder wenn s keine Zeitzoneninformationen, styles jedoch das DateTimeStyles.AssumeLocal-Flag enthält, analysiert die Methode die Zeichenfolge, ruft ToUniversalTime auf, um den zurückgegebenen DateTime-Wert in UTC zu konvertieren, und legt die Kind-Eigenschaft auf DateTimeKind.Utc fest. Wenn s eine UTC-Darstellung angibt oder wenn s keine Zeitzoneninformationen, styles jedoch das DateTimeStyles.AssumeUniversal-Flag enthält, analysiert die Methode die Zeichenfolge, führt keine Zeitzonenkonvertierung für den zurückgegebenen DateTime-Wert aus und legt die Kind-Eigenschaft auf DateTimeKind.Utc fest. In allen anderen Fällen hat das Flag keine Auswirkungen. |
|
|
Gibt an, dass Leerraum, der nicht durch format definiert wird, zwischen den einzelnen Datums- oder Uhrzeitelementen angezeigt werden kann. |
|
|
Gibt an, dass Leerraum, der nicht durch format definiert wird, am Anfang von s angezeigt werden kann. |
|
|
Gibt an, dass Leerraum, der nicht durch format definiert wird, am Ende von s angezeigt werden kann. |
|
|
Gibt an, dass s führenden, inneren und nachgestellten Leerraum enthalten kann, der nicht durch format definiert wurde. |
|
|
Gibt an, dass bei fehlenden Zeitzoneninformationen für s die Darstellung einer Ortszeit angenommen wird. Wenn das DateTimeStyles.AdjustToUniversal-Flag nicht vorhanden ist, wird die Kind-Eigenschaft des zurückgegebenen DateTime-Werts auf DateTimeKind.Local festgelegt. |
|
|
Gibt an, dass bei fehlenden Zeitzoneninformationen für s eine UTC-Darstellung angenommen wird. Wenn das DateTimeStyles.AdjustToUniversal-Flag nicht vorhanden ist, konvertiert die Methode den zurückgegebenen DateTime-Wert aus UTC in die Ortszeit und legt die zugehörige Kind-Eigenschaft auf DateTimeKind.Local fest. |
|
|
Wenn s zwar Uhrzeit-, jedoch keine Datumsinformationen enthält, wird das Datum des Rückgabewerts auf DateTime.MinValue.Date festgelegt. |
|
|
Der s-Parameter wird mithilfe von Standardwerten analysiert. Es ist kein Leerraum außer dem in format vorhandenen zulässig. Wenn s eine Datumskomponente fehlt, wird das Datum des zurückgegebenen DateTime-Werts auf 1.1.0001 festgelegt. Wenn s keine Zeitzoneninformationen enthält, wird die Kind-Eigenschaft des zurückgegebenen DateTime-Objekts auf DateTimeKind.Unspecified festgelegt. Wenn s Zeitzoneninformationen enthält, wird die Uhrzeit in die Ortszeit konvertiert und die Kind-Eigenschaft des zurückgegebenen DateTime-Objekts auf DateTimeKind.Local festgelegt. |
|
|
Versucht bei Zeichenfolgen mit Zeitzoneninformationen die Konvertierung in einen DateTime-Wert zu verhindern, dessen Kind-Eigenschaft auf DateTimeKind.Local festgelegt ist. Dieses Flag verhindert hauptsächlich die Konvertierung von UTC-Zeiten in Ortszeiten. |
Hinweise zu Aufrufern
In .NET Framework 4 gibt die TryParseExact-Methode false zurück, wenn die Zeichenfolge, die analysiert werden soll, eine Stundenkomponente und einen AM/PM-Kennzeichner enthält, die unvereinbar sind. In .NET Framework 3.5 und früheren Versionen wird der AM/PM-Kennzeichner ignoriert.
Im folgenden Beispiel wird die DateTime.TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime)-Methode veranschaulicht. Beachten Sie, dass die Zeichenfolge " 5/01/2009 8:30 AM" nicht erfolgreich analysiert werden kann, wenn der styles-Parameter DateTimeStyles.None entspricht, da format keine führenden Leerzeichen zulässt. Auch die Zeichenfolge "5/01/2009 09:00" kann bei Verwendung von "MM/dd/yyyy hh:mm" für format nicht erfolgreich analysiert werden, da die Datumszeichenfolge nicht mit der Monatszahl mit führender 0 beginnt, wie von format vorgegeben.
CultureInfo enUS = new CultureInfo("en-US"); string dateString; DateTime dateValue; // Parse date with no style flags. dateString = " 5/01/2009 8:30 AM"; if (DateTime.TryParseExact(dateString, "g", enUS, DateTimeStyles.None, out dateValue)) Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, dateValue.Kind); else Console.WriteLine("'{0}' is not in an acceptable format.", dateString); // Allow a leading space in the date string. if (DateTime.TryParseExact(dateString, "g", enUS, DateTimeStyles.AllowLeadingWhite, out dateValue)) Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, dateValue.Kind); else Console.WriteLine("'{0}' is not in an acceptable format.", dateString); // Use custom formats with M and MM. dateString = "5/01/2009 09:00"; if (DateTime.TryParseExact(dateString, "M/dd/yyyy hh:mm", enUS, DateTimeStyles.None, out dateValue)) Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, dateValue.Kind); else Console.WriteLine("'{0}' is not in an acceptable format.", dateString); // Allow a leading space in the date string. if (DateTime.TryParseExact(dateString, "MM/dd/yyyy hh:mm", enUS, DateTimeStyles.None, out dateValue)) Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, dateValue.Kind); else Console.WriteLine("'{0}' is not in an acceptable format.", dateString); // Parse a string with time zone information. dateString = "05/01/2009 01:30:42 PM -05:00"; if (DateTime.TryParseExact(dateString, "MM/dd/yyyy hh:mm:ss tt zzz", enUS, DateTimeStyles.None, out dateValue)) Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, dateValue.Kind); else Console.WriteLine("'{0}' is not in an acceptable format.", dateString); // Allow a leading space in the date string. if (DateTime.TryParseExact(dateString, "MM/dd/yyyy hh:mm:ss tt zzz", enUS, DateTimeStyles.AdjustToUniversal, out dateValue)) Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, dateValue.Kind); else Console.WriteLine("'{0}' is not in an acceptable format.", dateString); // Parse a string represengting UTC. dateString = "2008-06-11T16:11:20.0904778Z"; if (DateTime.TryParseExact(dateString, "o", CultureInfo.InvariantCulture, DateTimeStyles.None, out dateValue)) Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, dateValue.Kind); else Console.WriteLine("'{0}' is not in an acceptable format.", dateString); if (DateTime.TryParseExact(dateString, "o", CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind, out dateValue)) Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, dateValue.Kind); else Console.WriteLine("'{0}' is not in an acceptable format.", dateString); // The example displays the following output: // ' 5/01/2009 8:30 AM' is not in an acceptable format. // Converted ' 5/01/2009 8:30 AM' to 5/1/2009 8:30:00 AM (Unspecified). // Converted '5/01/2009 09:00' to 5/1/2009 9:00:00 AM (Unspecified). // '5/01/2009 09:00' is not in an acceptable format. // Converted '05/01/2009 01:30:42 PM -05:00' to 5/1/2009 11:30:42 AM (Local). // Converted '05/01/2009 01:30:42 PM -05:00' to 5/1/2009 6:30:42 PM (Utc). // Converted '2008-06-11T16:11:20.0904778Z' to 6/11/2008 9:11:20 AM (Local). // Converted '2008-06-11T16:11:20.0904778Z' to 6/11/2008 4:11:20 PM (Utc).
Windows 7, Windows Vista SP1 oder höher, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core wird nicht unterstützt), Windows Server 2008 R2 (Server Core wird mit SP1 oder höher unterstützt), Windows Server 2003 SP2
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.
Hinweis