解析dd / MM / yyyy格式时的DateTime解析错误。字符串未被识别为有效的日期时间

时间:2013-09-15 19:51:17

标签: c# javascript asp.net

我使用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”的值以解决问题。

2 个答案:

答案 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);