Heim > Backend-Entwicklung > C++ > Warum schlägt DateTime.Parse() mit „String wurde nicht als gültige DateTime erkannt' fehl und wie kann ich das Problem beheben?

Warum schlägt DateTime.Parse() mit „String wurde nicht als gültige DateTime erkannt' fehl und wie kann ich das Problem beheben?

Linda Hamilton
Freigeben: 2025-01-27 00:41:08
Original
537 Leute haben es durchsucht

Why Does DateTime.Parse() Fail with

„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()

Die

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren
Der Unterschied zwischen

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage