Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 分析dd/MM/yyyy格式时发生DateTime分析错误。字符串未被识别为有效的日期时间_C#_Javascript_Asp.net - Fatal编程技术网

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

C# 分析dd/MM/yyyy格式时发生DateTime分析错误。字符串未被识别为有效的日期时间,c#,javascript,asp.net,C#,Javascript,Asp.net,我使用web用户控件中某些页面元素的值创建一个字符串,如下所示 string bookingdate = ddlDate.SelectedItem.Text + "/" + ddlMonth.SelectedValue + "/" + ddlMonth.SelectedItem.Text.Substring(4, 2); 并且获取“字符串未被识别为有效的日期时间。”错误出现在下一行 cmd.Para

我使用web用户控件中某些页面元素的值创建一个字符串,如下所示

string bookingdate = ddlDate.SelectedItem.Text 
                       + "/" + ddlMonth.SelectedValue + "/" 
                       + ddlMonth.SelectedItem.Text.Substring(4, 2);
并且获取“字符串未被识别为有效的日期时间。”错误出现在下一行

cmd.Parameters.Add(new SqlParameter("@ArrivalDate", SqlDbType.DateTime)).Value = 
    DateTime.ParseExact(bookingdate, "dd/MM/yyyy", CultureInfo.InvariantCulture);

如何更改此字符串“bookingdate”的值以解决问题。

据我所知,您需要
印度日期格式
,即
dd/mm/yyyy
。因此,在代码中,将参数作为字符串传递,并在sql中使用
Convert(date,Convert(datetime,@ArrivalDate,103))
处理它。如果您只需要日期,并且处于Sql 2008或更高版本,请使用
date
作为数据类型,否则

Convert(datetime,@ArrivalDate,103) and leave your datatype as datetime
在cs中:

cmd.Parameters.AddWithValue("@ArrivalDate", bookingdate);

因此,
ddlmount
包含此格式的项目(您已发布到页面):

您的格式字符串如下:
dd/MM/yyyy

你已经看到问题了吗?格式字符串要求年份为四位数字

改为使用此格式字符串:
dd/MM/yy

DateTime.ParseExact(bookingdate, "dd/MM/yy", CultureInfo.InvariantCulture);

bookingdate
的确切值是多少?您可以使用TryParseExact而不是ParseExact。这应该是
yyy
年部分:
ddlmount。选择editem.Text.Substring(4,2)?若要回答您的警报问题:请改用调试器。bookingdate的值可能为,例如“15/09/2013”。我也尝试了TryParseExact,但仍然得到相同的错误。我使用的是SQLServer2005,我的数据库中有datetime列,更改datatype@Dev... 让它保持datetime,您必须在代码中更改SP参数,正如我回答的那样,您就完成了。
ddlMonth.SelectedValue + "/" + ddlMonth.SelectedItem.Text.Substring(4, 2)
DateTime.ParseExact(bookingdate, "dd/MM/yy", CultureInfo.InvariantCulture);