2016-07-27 9 views
-1

Ich bin nicht in der Lage, die Zeichenfolgenwerte, die aus dem ddl extrahiert wurde, in einen DateTime-Datentyp zu konvertieren.Problem beim Konvertieren von Zeichenfolge in DateTime-Format

Die Fehlermeldung

Eine Ausnahme vom Typ 'System.FormatException' in mscorlib.dll aufgetreten wurde aber nicht in Benutzercode behandelt. Weitere Informationen: Die Zeichenfolge wurde nicht als gültige DateTime erkannt.

Ich brauche nur das Datum in der SQL-Datenbank aktualisiert werden.

Dies ist ein Bild des Datadictionary und das Attribut ich erfordern würde

SQL Table http://i65.tinypic.com/ri4z95.jpg

Das sind meine aktuellen Codes, um den Geburtstag sein, der das Datum Zeit bekommen und konvertieren.

string birth = ddlDay.SelectedItem.Value + "-" + ddlMonth.SelectedItem.Value + "-" + ddlYear.SelectedItem.Value; 
DateTime birthDate = DateTime.ParseExact(birth, "dd-MMMM-yyyy", System.Globalization.CultureInfo.InvariantCulture); 
objCustomer.birthDate = birthDate; 
+0

Welchen Wert von 'Geburt' versagt für Sie? –

+2

Wir wissen nicht, was Ihre DropDownListen anzeigen, daher ist es unmöglich, Ihnen zu helfen. –

+1

Wenn Sie statt einer separaten Dropdown-Liste eine Form der Datumsauswahl verwenden, wird das ausgewählte Datum mit ziemlicher Sicherheit als "DateTime" angezeigt, und Sie können es vermeiden, herumzualbern mit Strings und Formatierung komplett. –

Antwort

-2

Ihren Code ändern:

DateTime.ParseExact(birth, "dd-MM-yyyy", System.Globalization.CultureInfo.InvariantCulture); 
+0

Dies wird nur behoben, wenn 'ddlMonth.SelectedItem.Value' eine zweistellige Monatsnummer ist (und kein vollständiger Monatsname, wie derzeit geschrieben) –

+0

Ok. Aha. Und ist ddlDay.SelectedItem.Value ein numerischer Wert? –

0
string date = "01/08/2008"; 
DateTime dt = Convert.ToDateTime(date); 
Console.WriteLine("Year: {0}, Month: {1}, Day: {2}", dt.Year, dt.Month, dt.Day); 
0

Statt ParseExact Sie TryParse sicher sein nutzen könnten. ie:

var ddlDaySelectedItemValue = "29"; 
var ddlMonthSelectedItemValue = "Feb"; // February, 2, 02 
var ddlYearSelectedItemValue = "2016"; 

DateTime birthDate; 
string birth = ddlYearSelectedItemValue + " " + ddlMonthSelectedItemValue + " " + ddlDaySelectedItemValue; 

if (DateTime.TryParse(birth, System.Globalization.CultureInfo.InvariantCulture, DateTimeStyles.None, out birthDate)) 
{ 
    objCustomer.birthDate = birthDate; 
}