Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen.
Übersetzung
Original
Dieser Artikel wurde noch nicht bewertet - Dieses Thema bewerten.

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.

Namespace:  System
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.

Rückgabewert

Typ: System.Boolean
true, wenn s erfolgreich konvertiert wurde, andernfalls false.
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 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:

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

AdjustToUniversal

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.

AllowInnerWhite

Gibt an, dass Leerraum, der nicht durch format definiert wird, zwischen den einzelnen Datums- oder Uhrzeitelementen angezeigt werden kann.

AllowLeadingWhite

Gibt an, dass Leerraum, der nicht durch format definiert wird, am Anfang von s angezeigt werden kann.

AllowTrailingWhite

Gibt an, dass Leerraum, der nicht durch format definiert wird, am Ende von s angezeigt werden kann.

AllowWhiteSpaces

Gibt an, dass s führenden, inneren und nachgestellten Leerraum enthalten kann, der nicht durch format definiert wurde.

AssumeLocal

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.

AssumeUniversal

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.

NoCurrentDateDefault

Wenn s zwar Uhrzeit-, jedoch keine Datumsinformationen enthält, wird das Datum des Rückgabewerts auf DateTime.MinValue.Date festgelegt.

None

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.

RoundtripKind

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).


.NET Framework

Unterstützt in: 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Unterstützt in:

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.
Fanden Sie dies hilfreich?
(1500 verbleibende Zeichen)
Community-Inhalt Hinzufügen
Anmerkungen FAQ
Microsoft führt eine Onlineumfrage durch, um Ihre Meinung zur MSDN-Website zu erfahren. Wenn Sie sich zur Teilnahme entscheiden, wird Ihnen die Onlineumfrage angezeigt, sobald Sie die MSDN-Website verlassen.

Möchten Sie an der Umfrage teilnehmen?