错误:字符串未被识别为有效的DateTime

时间:2013-11-11 12:55:23

标签: c#-4.0

这是我的代码:

//Session["Date"]=ddlDate.SelectedItem+ ddlMonth.SelectedItem+ddlYear.SelectedItem;
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["dbconnection"].ConnectionString);
conn.Open();
string date = Convert.ToString(ddlYear.SelectedItem.Value) + "/" + Convert.ToString(ddlMonth.SelectedItem.Value) + "/" + Convert.ToString(ddlDate.SelectedItem.Value);
DateTime dt = Convert.ToDateTime(date);
// ddlYear.SelectedValue + "/" + ddlMonth.SelectedValue + "/" + ddlDate.SelectedValue
SqlCommand cmd = new SqlCommand(@"insert into OnlineBookingEvent(BookingEvent,BookeventDate,cdt,udt)values
                                (@BookingEvent,@BookeventDate,@cdt,@udt)", conn);
cmd.Parameters.AddWithValue("@BookingEvent", ddlEventName.DataValueField);
cmd.Parameters.AddWithValue("@BookeventDate",dt);
cmd.Parameters.AddWithValue("@cdt", System.DateTime.Now);
cmd.Parameters.AddWithValue("@udt", System.DateTime.Now);
cmd.ExecuteNonQuery();

1 个答案:

答案 0 :(得分:0)

你使用什么文化?如果日期分隔符不是/,则日期解析将失败,因为/被替换为CultureInfo.CurrentCulture的实际日期分隔符。

如果您要强制执行此分隔符,可以将CultureInfo.InvariantCulture作为DateTime.Parse的参数传递:

string date = string.Format("{0}/{1}/{2}"
    , ddlYear.SelectedItem.Value
    , ddlMonth.SelectedItem.Value
    , ddlDate.SelectedItem.Value); 
DateTime dt = DateTime.Parse(date, System.Globalization.CultureInfo.InvariantCulture);

请参阅:The "/" Custom Format Specifier

请注意,由于此属性已经是字符串,因此不需要Convert.ToString(ddlYear.SelectedItem.Value)。出于可读性原因,我还用String.Format替换了字符串连接。