我有一个文本框(asp:textbox)。我正在使用C#.NET和SQL Server 2008 R2作为数据库。我在尝试输入时间时遇到问题。即 08:00、14:00 等。
单击"提交"后,它应该存储到表中。但是错误。错误是"字符串未被识别为有效的时间跨度"。字段名称是"您的时间",数据类型为 time(7)。
我正在使用sqlcommand将其存储到表中。
cmd.Parameters.Add("@YourTime", SqlDbType.Time, 7).Value = txtYourTime.Text;
有人可以帮忙吗?
非常感谢。
干杯
最好的方法是使用 TimeSpan.TryParse
将文本(字符串)值从 txtYourTime.Text
转换为TimeSpan
。
传递反映用户的CultureInfo
(对于 IFormatProvider
参数)(不同的区域性使用不同的格式)。这可确保您控制这些参数,而不是反映服务器设置而不是用户意图的默认值。
编辑:根据要求采样:
var ci = CultureInfo.GetCultureInfo(Request.UserLanguages[0]);
TimeSpan ts;
if (TimeSpan.TryParse(txtYourTime.Text, ci, out ts)) {
cmd.Parameters.Add("@YourTime", SqlDbType.Time).Value = ts;
} else {
// Report invalid input to user.
}
字符串转换为有效的TimeSpan
,如下所示:
myTime = TimeSpan.Parse(txtYourTime.Text);
cmd.Parameters.Add("@YourTime", SqlDbType.Time, 7).Value = myTime;