2016-07-27 157 views
-1

我无法将已从ddl中提取的字符串值转换为DateTime数据类型。将字符串转换为日期时间格式的问题

错误消息

类型“System.FormatException”的一个例外发生在mscorlib.dll 但在用户代码中没有处理。附加信息:字符串为 未被识别为有效的日期时间。

我只需要在SQL数据库中更新日期。

这是数据字典的图像,我要求将出生日期

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

这些都是获取和转化的日期时间我目前的代码的属性。

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

'birth'对你来说没有什么价值? –

+2

我们不知道你的DropDownLists显示什么,所以它不可能提供帮助。 –

+1

另外,当然,如果您切换到使用某种形式的日期选择器控件而不是单独的下拉列表,它几乎可以肯定地将选定日期作为“DateTime”公开,然后您可以避免混乱字符串和格式完全。 –

回答

-2

你的代码更改为:

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

如果'ddlMonth.SelectedItem.Value'是一个两位数的月份编号(而不是一个完整的月份名称,如当前编写的),这将只修复它。 –

+0

好的。我懂了。并且是ddlDay.SelectedItem.Value数值? –

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

相反ParseExact的你可以使用的TryParse是安全的。即:

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; 
} 
相关问题