„String wird nicht als gültiges DateTime-Format TT/MM/JJJJ erkannt“ Fehler beim Parsen
Wenn Sie DateTime.Parse()
verwenden, um eine Zeichenfolge im Format „tt/MM/jjjj“ in ein DateTime
-Objekt zu konvertieren, tritt möglicherweise der Fehler „Zeichenfolge wurde nicht als gültige Datum/Uhrzeit erkannt“ auf. Dieser Fehler weist darauf hin, dass das Zeichenfolgenformat nicht mit dem erwarteten Format übereinstimmt, das im Standardwert IFormatProvider
angegeben ist.
Lösung:
Methode 1: Verwenden Sie ParseExact()
DateTime.ParseExact()
-Methode gibt explizit das gewünschte Datumsformat an und überschreibt das kulturspezifische Standardformat. Diese Methode erfordert drei Parameter: die zu konvertierende Zeichenfolge, die Formatzeichenfolge und IFormatProvider
.
<code class="language-csharp">DateTime date = DateTime.ParseExact(this.Text, "dd/MM/yyyy", null);</code>
Methode 2: Anpassung IFormatProvider
Alternativ können Sie eine benutzerdefinierte IFormatProvider
erstellen, um die gewünschte kulturspezifische Formatierung bereitzustellen. Mit diesem Ansatz können Sie die Flexibilität von DateTime.Parse()
beibehalten und gleichzeitig einem benutzerdefinierten Format folgen.
<code class="language-csharp">// 创建一个具有所需格式的自定义提供程序 CultureInfo customCulture = new CultureInfo("en-US"); customCulture.DateTimeFormat.ShortDatePattern = "dd/MM/yyyy"; // 使用自定义提供程序进行解析 DateTime date = DateTime.Parse(this.Text, customCulture);</code>
Parse()
und ParseExact()
:
ParseExact()
gibt das Format explizit an, während Parse()
auf dem Standard IFormatProvider
(normalerweise der aktuellen Kultur) basiert. ParseExact()
ist präziser und typsicherer, da es die Zeichenfolge gemäß dem angegebenen Format validiert. Parse()
Flexibler, ermöglicht unterschiedliche Datumsformate basierend auf der Kultur des Systems. Empfehlung:
Beide Methoden sind gültig, solange das Format der Eingabezeichenfolge korrekt ist. Aus Sicht der Typsicherheit und Präzision wird ParseExact()
bevorzugt, da es ein bestimmtes Format erzwingt. Wenn das Datumsformat jedoch von Kultur zu Kultur unterschiedlich sein kann, ist Parse()
möglicherweise praktischer, da es sich automatisch an das Gebietsschema des Benutzers anpasst. Letztendlich hängt der beste Ansatz von den spezifischen Anwendungsanforderungen ab.
Das obige ist der detaillierte Inhalt vonWarum schlägt DateTime.Parse() mit „String wurde nicht als gültige DateTime erkannt' fehl und wie kann ich das Problem beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!