2016-07-27 160 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; 
} 
相關問題