C# 如何在SQL Server中转换用户输入日期和时间并保存
我使用带有AjaxToolkit MaskedTextextender的C# 如何在SQL Server中转换用户输入日期和时间并保存,c#,sql-server,datetime,C#,Sql Server,Datetime,我使用带有AjaxToolkit MaskedTextextender的为StartDate和EndDate设置了日期时间输入文本框结束日期与开始日期代码相同 这是代码 <asp:TextBox ID="txtStartDateTime" runat="server"></asp:TextBox> <ajaxToolkit:MaskedEditExtender ID="MaskedEditExtender1" TargetControlID="txtSta
为StartDate
和EndDate
设置了日期时间输入文本框<代码>结束日期与开始日期
代码相同
这是代码
<asp:TextBox ID="txtStartDateTime" runat="server"></asp:TextBox>
<ajaxToolkit:MaskedEditExtender ID="MaskedEditExtender1"
TargetControlID="txtStartDateTime" runat="server" Mask="99/99/9999 99:99"
MessageValidatorTip="true" MaskType="DateTime" ClearMaskOnLostFocus="true"
ClearTextOnInvalid="true" AcceptAMPM="true" UserDateFormat="DayMonthYear"
ErrorTooltipEnabled="True">
</ajaxToolkit:MaskedEditExtender>
<ajaxToolkit:MaskedEditValidator ID="MaskedEditValidator1" runat="server"
ControlToValidate="txtStartDateTime" ControlExtender="MaskedEditExtender1"
IsValidEmpty="false" EmptyValueMessage="Input Date and Time"
InvalidValueMessage="Date Time Input Not Valid">
</ajaxToolkit:MaskedEditValidator>
现在,问题是我在将这些日期保存到数据库时出错。这是一条错误消息
System.FormatException:未将字符串识别为有效的日期时间
在System.DateTimeParse.ParseExact(字符串s,字符串格式,
DateTimeFormatInfo dtfi,DateTimeStyles样式)
在System.DateTime.ParseExact(字符串s,字符串格式,
IFormatProvider(提供程序)
我尝试了
convert.ToDateTime(..)
。它不起作用。我完全不知道如何在SQL Server中保存日期和时间。有人能帮我修复它吗?无论您在txtStartDateTime中输入什么,它都与您为ParseExact指定的确切格式不匹配。我对ajaxToolkit一无所知,但您的“掩码”与格式不同。Mask=“99/99/9999 99:99”不同于“dd-MM-yyy-hh:MM”谢谢。我改为“dd/MM/yyyy HH:MM”。但仍显示错误。如果有多余空间,请尝试打印strStartDateTime值,然后修剪。此外,“99/99/99999:99”不是有效的日期和时间。尝试将该值更改为“01/01/1999 00:00”,您可以在这里自行获取匹配的格式。这当然不是sql问题,因为您甚至还没有通过解析输入。@ray这没有任何区别。我试过你的方法。不工作。html代码中的日期时间格式为Mask=“99/99/9999 99:99”,wihc与c代码中的“dd/MM/yyyy HH:MM”相等。知道我哪里出错了吗。感谢
string strStartDateTime = txtStartDateTime.Text;
DateTime dtStartingDateTime = new DateTime();
dtStartingDateTime = DateTime.ParseExact(strStartDateTime, "dd/MM/yyyy hh:mm",
System.Globalization.CultureInfo.InvariantCulture);