我知道这是一个常见错误,但我需要一些关于摆脱此错误的最佳方法的解释。
我有一个日期选择器用于存储出生日期。
日期选择器
<script>
$(document).ready(function () {
$(".datepicker").datepicker({
dateFormat: "yy-mm-dd",
changeMonth: true,
changeYear: true,
yearRange: "-100:-1",
defaultDate: "-25y"
});
});
</script>
我将其作为参数传递以存储在数据库中,如下所示:
cmd.Parameters.Add("@DOB", SqlDbType.Date).Value = txtdob.Value;
工作得很好。 现在在编辑页面上,我将 DOB 从数据库插入到日期选择器,如下所示:
txtdob.Value = ((DateTime)rdr["DOB"]).ToString("dd-MM-yyyy");
仍然工作正常。我看到了预期的 DOB。 现在我只需更改其他内容(例如用户的姓名或城市),然后单击“更新”按钮,并将 DOB 传递为:
cmd.Parameters.Add("@DOB", SqlDbType.DateTime).Value = txtdob.Value;
我收到一个错误
Failed to convert parameter value from a String to a DateTime.
最佳答案
日期选择器日期格式:dateFormat:“yy-mm-dd”,
但您正在编辑 ((DateTime)rdr["DOB"]).ToString("dd-MM-yyyy");
所以,更新后它不起作用。
yyyy-MM-dd
格式有效,但 dd-MM-yyyy
无效,这是针对某些文化格式问题。
所以,您可以尝试使用:DateTime.Parse() 或者
cmd.Parameters.Add("@DOB", SqlDbType.DateTime).Value =
DateTime.ParseExact(txtdob.Value,
"Your_Date_Format(e.g dd-mm-yyyy)",
CultureInfo.InvariantCulture);
关于asp.net - 无法将参数值从字符串转换为日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32985507/