2017-05-17 6 views
0
var test = DateTime.ParseExact("Feb 4 2014 12:00AM", "MMM dd yyyy HH:mmtt", System.Globalization.CultureInfo.InvariantCulture).ToString("yyy-MM-dd"); 
System.Diagnostics.Debug.WriteLine(test); 

So habe ich diesen Code. Was ich versuche, ist Feb 4 2014 12:00AM zu 2014-02-04 zu konvertieren.DateTime Änderung Format Fehler

Der Fehler, den ich bekommen, ist dieses:

Eine Ausnahme vom Typ 'System.FormatException' in mscorlib.dll aufgetreten, wurde aber in Benutzercode

Zusätzliche Informationen nicht behandelt: String war nicht als gültige DateTime erkannt.

Aber ich kann nicht herausfinden, was los ist. Irgendeine Idee ?

Antwort

4

Einige Probleme mit Ihrem Format. Es sollte sein:

"MMM d yyyy hh:mmtt" 

Verwendung:

  • Einzel d für Datumsteil, wie es Einzel- und Doppelstellige Daten aufnehmen kann, Ihr aktueller Spezifizierers dd einstelligen Datumsteil mit Null zu beginnen erwarten würde wie 04. Single d kann verwendet werden, um sowohl ein- als auch zweistellige Daten zu analysieren.
  • Verwendung hh statt HH für Stunde Teil, da Sie AM in der Zeichenfolge, die Ihre Stunden-Format bedeutet, ist 12 Stunden und nicht 24 Stunden.

So sollte Ihr Code sein:

var test = DateTime.ParseExact("Feb 4 2014 12:00AM", "MMM d yyyy hh:mmtt", System.Globalization.CultureInfo.InvariantCulture).ToString("yyy-MM-dd"); 
+1

Vielen Dank. Ich versuchte es auch mit der Single "d", dachte aber nicht, dass das Problem von "hh" kam. Ich habe irgendwo das Gegenteil gelesen und dachte, es sei "HH" für "12" Stunden und nicht "24". Danke Freund :) – Darkpingouin

+0

Erhalten Sie immer noch Ausnahmen, wenn das Datum dieses Format ist: '17. April 2014 00:00 Uhr' verwaltet das 'd' nur einzelne Zahl Tage? – Darkpingouin

+0

Endlich das Problem gefunden. Also scheinbar, wenn Sie von einem SQL reauest zu String ein Datum drehen. Es tut folgendes: - wenn die Tagesnummer "4" ist, gibt es dir "4" statt nur "4". - wenn der Tag "17" ist, gibt es Juste '17'. Ich verwende die Replace-Funktion, um es auszuarbeiten. – Darkpingouin