字符串未被识别为有效的日期时间12
本文关键字:日期 时间 有效 识别 字符串 | 更新日期: 2023-09-27 18:05:14
在这里我绑定日期(从表)在下拉列表在这种格式2015,并希望填充网格视图中的数据时,网格视图中的日期等于下拉列表中的选定值。错误提示"字符串未被识别为有效的日期时间"。本行错误
cmd.Parameters.AddWithValue("@eventDate", DateTime.Parse(ddlLocation.SelectedValue));
这是下拉列表代码
SqlCommand cmd = new SqlCommand("SELECT DATEPART(yyyy, eventDate) AS eventDate FROM events group by eventDate", con);
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
con.Close();
ddlLocation.DataSource = dt;
ddlLocation.DataTextField = "eventDate";
ddlLocation.DataValueField = "eventDate";
ddlLocation.DataBind();
ddlLocation.Items.Insert(0, new ListItem("All", ""));
,这是网格视图代码:
SqlCommand cmd = new SqlCommand("select id, eventDate, eventName from events where eventDate = @eventDate", con);
cmd.Parameters.AddWithValue("@eventDate", DateTime.Parse(ddlLocation.SelectedValue));
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
}
else
{
SqlCommand cmd = new SqlCommand("select id, eventDate, eventName from events", con);
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
}
con.Close();
gvDetails.DataSource = dt;
gvDetails.DataBind();
}
既然Adam已经回答了这个问题,请允许我解释一下如何在代码中使用它:
正如Adam所解释的,你输入的ddlLocation.SelectedValue
格式不正确。您需要做的是首先将该值设置为一个完整的日期。你可以这样做:
cmd.Parameters.AddWithValue("@eventDate", DateTime.Parse("1/1/" + ddlLocation.SelectedValue));
通过将"1/1/"
添加到您的值中,这将使您的ddlLocation.SelectedValue = "1/1/2015"
(有效的输入DateTime.Parse
方法。
之后,当你需要访问这个日期时,你可以使用Adam的建议
var result = DateTime.Parse("1/1/2015").Year;
//result = 15
DateTime
存储一个完整的值。你不能马上在DateTime
中存储一年的时间。您最好存储整个日期,然后将年份解析为string
或int
。在后端进行适当的修改,或者在前端将其强制转换为字符串或int。
我想解决这个问题的方法是在前端,从用户那里获取以下内容,dtb从这个问题
var result = DateTime.Parse("05/11/2010").Year;
//result = 10
您可以尝试如下操作:
string Text="22/11/2009";
DateTime date = DateTime.ParseExact(Text, "dd/MM/yyyy", null);
Console.WriteLine("update date => "+date.ToString("yyyy-MM-dd"));