我使用Web用户控件中某些页面元素的值创建一个字符串,如下所示
string bookingdate = ddlDate.SelectedItem.Text
+ "/" + ddlMonth.SelectedValue + "/"
+ ddlMonth.SelectedItem.Text.Substring(4, 2);
并且“获取”字符串未被识别为有效的DateTime。“以下行中的错误
cmd.Parameters.Add(new SqlParameter("@ArrivalDate", SqlDbType.DateTime)).Value =
DateTime.ParseExact(bookingdate, "dd/MM/yyyy", CultureInfo.InvariantCulture);
如何更改此字符串“bookingdate”的值以解决问题。
答案 0 :(得分:1)
据我所知,您需要Indian Date Format
dd/mm/yyyy
。所以在你的代码中,将参数作为字符串传递,并在sql中使用Convert(date,Convert(datetime,@ArrivalDate,103))
处理它。如果您只需要日期,请使用date
作为您的数据类型,否则使用Sql 2008 or above
Convert(datetime,@ArrivalDate,103) and leave your datatype as datetime
在cs:
cmd.Parameters.AddWithValue("@ArrivalDate", bookingdate);
答案 1 :(得分:1)
因此ddlMonth
包含此格式的项目(您向网页发布了the link):
<option value="08">Aug 14</option>
现在你试图从中提取月份和年份:
ddlMonth.SelectedValue + "/" + ddlMonth.SelectedItem.Text.Substring(4, 2)
您的格式字符串为:dd/MM/yyyy
你已经看到了这个问题吗?格式字符串需要年份的四位数。
而是使用此格式字符串:dd/MM/yy
DateTime.ParseExact(bookingdate, "dd/MM/yy", CultureInfo.InvariantCulture);