9 Stimmen

Parsen von Simple DateTime

DateTime dt = DateTime.ParseExact("1122010", "Mddyyyy", System.Globalization.CultureInfo.CurrentCulture);

Diese Ausnahme wird geworfen: String wurde nicht als gültiger DateTime erkannt.

Ich bin sicher, dass es an der fehlenden führenden 0 im Monat liegt. Wie lautet die korrekte Formatzeichenfolge?

12voto

Anthony Pegram Punkte 119149

Ich schlage vor, das Format "MMddyyyy" zu verwenden und sicherzustellen, dass Ihr Eingabeparameter mindestens 8 Zeichen hat. Beispiel:

DateTime dt = DateTime.ParseExact("1122010".PadLeft(8, '0'), "MMddyyyy", System.Globalization.CultureInfo.CurrentCulture);

Wenn Sie eine Datenquelle verwenden, bei der die führende 0 für den Monat fehlt, wird sie bei Bedarf hinzugefügt.

4voto

James Curran Punkte 98228

Das Problem ist, dass Sie ParseExact nicht genügend Informationen geben, um damit zu arbeiten.

"M" steht für einen 1- oder 2-stelligen Monat. Aber Ihre Zeichenfolge beginnt mit "1122". Ist das der 12. Januar oder der 22. November?

Wie Anthony zeigt, besteht die einzige Lösung darin, bei Bedarf mit einer 0 aufzufüllen.

1voto

Judicium Punkte 56

Die Formatzeichenfolge "M" ist inakzeptabel, da nicht alle Monate durch eine einzige Ziffer oder ein einziges Zeichen eindeutig dargestellt werden können. Wie bereits vorgeschlagen, müssen Sie "MMddyyyy" verwenden und die linke Zeichenfolge erforderlichenfalls auffüllen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X