字符串未被识别为有效的DateTime错误? [英] String was not recognized as a valid DateTime Error?

查看:84
本文介绍了字符串未被识别为有效的DateTime错误?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我将用户数据插入到sql表中,但在提交时会出现以下错误。

System.FormatException:字符串未被识别为有效的DateTime。在System.DateTimeParse.Parse(String s,DateTimeFormatInfo dtfi,DateTimeStyles样式)的System.Convert.ToDateTime(字符串值)处于电子邮箱中的Registration_Requestaccount.BtnSubmit_Click(Object sender,EventArgs e)中:\ ECCII \Registration \Requestaccount。 aspx.cs:第166行



这是我的代码:



< ajaxToolkit:ToolkitScriptManager ID =   ToolkitScriptManager1 runat =   server >  < /   ajaxToolkit:ToolkitScriptManager  >  
< asp: TextBox ID = tbxpartyjoinson runat = server CssClass = TextBoxClass Width = 50% TextMode = SingleLine ToolTip = 输入您的电子邮件地址 AutoCompleteType = 已禁用占位符= 例如01-03-2010 > < / asp:TextBox >
< ajaxToolkit:CalendarExtender ID = CalendarExtender1 runat = server TargetControlID = tbxpartyjoinson PopupPosition = 格式= dd-MM-yyyy > < / ajaxToolkit:CalendarExtender >
< asp:RequiredFieldValidator ID = rvjoiningdat e runat = server显示= ControlToValidate = tbxpartyjoinson ErrorMessage = 请输入您参加聚会的日期 Text = *字体名称= Calibri字体大小= medium ForeColor = 红色 > < / asp:RequiredFieldValidator >
< asp:RegularExpressionValidator ID = revjoiningdate runat = server Display = ControlToValidate = tbxpartyjoinson ValidationExpression = ^(0 [1- 9] | 1 [0-9] | 2 [0-9] | 3 [1-2])[ - ](0 [1-9] | 1 [0-2])[ - ](1 [9] [0-9] [0-9] | 2 [0] [0-9] [0-9])$ ErrorMessage = < span class =code-string>日期格式应为31/12/2014 Text = *字体名称= Calibri字体大小= ForeColor = 红色 > < / asp:RegularExpressionValidator >





 db1.sqlcmd =  new  SqlCommand(< span class =code-string>  uspAccountRequest); 
使用(SqlDataAdapter sda = new SqlDataAdapter())
{
db1.sqlcmd.CommandType = CommandType.StoredProcedure;
db1.sqlcmd.Parameters.AddWithValue( @ FirstName,名字);
db1.sqlcmd.Parameters.AddWithValue( @ LastName,姓氏);
db1.sqlcmd.Parameters.AddWithValue( @ CNIC,cnic);
db1.sqlcmd.Parameters.AddWithValue( @ Email,email);
db1.sqlcmd.Parameters.AddWithValue( @ Party,DDParty.SelectedValue);
db1.sqlcmd.Parameters.AddWithValue( @ PartyJoiningDate,Convert.ToDateTime(tbxpartyjoinson) 。文本));
db1.sqlcmd.Parameters.AddWithValue( @ Constituency,DDConstituency.SelectedValue);
db1.sqlcmd.Parameters.Add( @ success,SqlDbType.Bit);
db1.sqlcmd.Parameters [ @ success]。Direction = ParameterDirection.Output;
db1.sqlcmd.Connection = db1.sqlcon;
db1.sqlcon.Open();
reqid = Convert.ToInt32(db1.sqlcmd.ExecuteScalar());
success = Convert.ToBoolean(db1.sqlcmd.Parameters [ @ success]。价值);







 创建  PROC  uspAccountRequest 
@ success out,
@ FirstName varchar 20 ), @ LastName varchar 20 ), @ CNIC bigint @ Email varchar 50 ), @ Constituency int @ Part y int @ PartyJoiningDate datetime
AS
BEGIN
SET NOCOUNT ON ;
BEGIN TRY
IF EXISTS SELECT 电子邮件 FROM TblAccountRequest WHERE Email = @ Email
BEGIN
SELECT -1 - 电子邮件存在。
END
ELSE IF EXISTS SELECT CNIC FROM TblAccountRequest WHERE CNIC = @ CNIC
BEGIN
SELECT -2 - CNIC存在
END
ELSE IF EXISTS SELECT 电子邮件 FROM TblUser WHERE Email = @ Email
BEGIN
SELECT -3 - 电子邮件存在。
END
ELSE IF EXISTS SELECT NIC FROM TblUser WHERE NIC = @ CNIC
BEGIN
SELECT -4 - CNIC存在。
END
ElSE
BEGIN
插入 TblAccountRequest(FirstName,LastName,CNIC,Email,选区,Party,partyjoninson,RequestDate,IsAccepted)
@ FirstName @ LastName @ CNIC @ Email ,( SELECT 代码 FROM TblConstituency WHERE ConstID = @ Constituency ),( SELECT PartyName FROM TblParty WHERE PartyId = @ Party ),< span class =code-sdkkeyword> @ PartyJoiningDate ,GETDATE(), 0 SELECT @@ IDENTITY
SELECT SCOPE_IDENTITY () - 请求ID
SET @ success = 1
END
END TRY
BEGIN CATCH
SET @ success = 0
END CATCH
END

解决方案

ErrorMessage = 日期应该格式为31/12/2014 Text = *字体名称= Calibri字体大小= ForeColor = 红色 > < / asp:RegularExpressionValidator >





 db1.sqlcmd =  new  SqlCommand(  uspAccountRequest< /跨度>); 
使用(SqlDataAdapter sda = new SqlDataAdapter())
{
db1.sqlcmd.CommandType = CommandType.StoredProcedure;
db1.sqlcmd.Parameters.AddWithValue( @ FirstName,名字);
db1.sqlcmd.Parameters.AddWithValue( @ LastName,姓氏);
db1.sqlcmd.Parameters.AddWithValue( @ CNIC,cnic);
db1.sqlcmd.Parameters.AddWithValue( @ Email,email);
db1.sqlcmd.Parameters.AddWithValue( @ Party,DDParty.SelectedValue);
db1.sqlcmd.Parameters.AddWithValue( @ PartyJoiningDate,Convert.ToDateTime(tbxpartyjoinson) 。文本));
db1.sqlcmd.Parameters.AddWithValue( @ Constituency,DDConstituency.SelectedValue);
db1.sqlcmd.Parameters.Add( @ success,SqlDbType.Bit);
db1.sqlcmd.Parameters [ @ success]。Direction = ParameterDirection.Output;
db1.sqlcmd.Connection = db1.sqlcon;
db1.sqlcon.Open();
reqid = Convert.ToInt32(db1.sqlcmd.ExecuteScalar());
success = Convert.ToBoolean(db1.sqlcmd.Parameters [ @ success]。价值);







 创建  PROC  uspAccountRequest 
@ success out,
@ FirstName varchar 20 ), @ LastName varchar 20 ), @ CNIC bigint @ Email varchar 50 ), @ Constituency int @ Part y int @ PartyJoiningDate datetime
AS
BEGIN
SET NOCOUNT ON ;
BEGIN TRY
IF EXISTS SELECT 电子邮件 FROM TblAccountRequest WHERE Email = @ Email
BEGIN
SELECT -1 - 电子邮件存在。
END
ELSE IF EXISTS SELECT CNIC FROM TblAccountRequest WHERE CNIC = @ CNIC
BEGIN
SELECT -2 - CNIC存在
END
ELSE IF EXISTS SELECT 电子邮件 FROM TblUser WHERE Email = @ Email
BEGIN
SELECT -3 - 电子邮件存在。
END
ELSE IF EXISTS SELECT NIC FROM TblUser WHERE NIC = @ CNIC
BEGIN
SELECT -4 - CNIC存在。
END
ElSE
BEGIN
插入 TblAccountRequest(FirstName,LastName,CNIC,Email,选区,Party,partyjoninson,RequestDate,IsAccepted)
@ FirstName @ LastName @ CNIC @ Email ,( SELECT 代码 FROM TblConstituency WHERE ConstID = @ Constituency ),( SELECT PartyName FROM TblParty WHERE PartyId = @ Party ),< span class =code-sdkkeyword> @ PartyJoiningDate ,GETDATE(), 0 SELECT @@ IDENTITY
SELECT SCOPE_IDENTITY () - 请求ID
SET @ success = 1
END
END TRY
BEGIN CATCH
SET @ success = 0
END CATCH
END


解析DateTime; 
if (DateTime.TryParseExact(tbxpartyjoinson.Text, dd-MM-yyyy
CultureInfo.CurrentCulture,DateTimeStyles.None, out 解析))
{
db1.sqlcmd.Parameters.AddWithValue( @ PartyJoiningDate,已解析);
} 其他
{
// 转换错误,将空值或日期时间最小值设置为参数
// 或如果这是必需参数,向用户显示错误并退出操作
}


请确保从日历日期时间格式,但为了正确的结果使用RadDatePicker控件这是telerik控件,这个控件返回信任数据。



请下载此DLL用于telerik控件Telerik.Web.UI.dll。



并使用如下:

 <   telerik:raddatepicker     id   =  dtpRequestDate    runat   =  server < span class =code-attribute>   allowcustomtext   =  false    xmlns:telerik   = #unknown >  
ShowPopupOnFocus =TrueMarkFirstMatch =truePopupDirection =TopRightSkin =Vista
Culture =English(United States)meta:resourcekey =dtpRequestDateResource1>
< calendar < span class =code-attribute> usecolumnheadersasselectors = False userowheadersasselectors = False viewselectortext = x >
< / calendar >
< dateinput dateformat = dd / MM / yyyy displaydateformat = dd / MM / yyyy labelcssclass = >
Width =>
< / dateinput >
< datepopupbutton cssclass = hoverimageurl = imageurl = / >
< / telerik:raddatepicker >


I am inserting user data into the sql table, but on submitting it gives the following error.
System.FormatException: String was not recognized as a valid DateTime. at System.DateTimeParse.Parse(String s, DateTimeFormatInfo dtfi, DateTimeStyles styles) at System.Convert.ToDateTime(String value) at Registration_Requestaccount.BtnSubmit_Click(Object sender, EventArgs e) in e:\ECCII\Registration\Requestaccount.aspx.cs:line 166

Here is my code:

<ajaxToolkit:ToolkitScriptManager ID="ToolkitScriptManager1"  runat="server"></ajaxToolkit:ToolkitScriptManager>
                   <asp:TextBox ID="tbxpartyjoinson" runat="server" CssClass="TextBoxClass" Width="50%" TextMode="SingleLine" ToolTip="Enter Your Email Address" AutoCompleteType="Disabled" placeholder="E.g. 01-03-2010"></asp:TextBox>
                   <ajaxToolkit:CalendarExtender ID="CalendarExtender1"  runat="server" TargetControlID="tbxpartyjoinson" PopupPosition="Right" Format="dd-MM-yyyy"></ajaxToolkit:CalendarExtender>
                   <asp:RequiredFieldValidator ID="rvjoiningdate" runat="server" Display="None" ControlToValidate="tbxpartyjoinson" ErrorMessage="Please Enter Your Date of Joining the Party" Text="*" Font-Names="Calibri" Font-Size="medium" ForeColor="Red"></asp:RequiredFieldValidator>
                   <asp:RegularExpressionValidator ID="revjoiningdate" runat="server" Display="None" ControlToValidate="tbxpartyjoinson" ValidationExpression="^(0[1-9]|1[0-9]|2[0-9]|3[1-2])[-](0[1-9]|1[0-2])[-](1[9][0-9][0-9]|2[0][0-9][0-9])$" ErrorMessage="Date should be in the format 31/12/2014" Text="*" Font-Names="Calibri" Font-Size="Small" ForeColor="Red"></asp:RegularExpressionValidator>



db1.sqlcmd = new SqlCommand("uspAccountRequest");
                using (SqlDataAdapter sda = new SqlDataAdapter())
                {
                    db1.sqlcmd.CommandType = CommandType.StoredProcedure;
                    db1.sqlcmd.Parameters.AddWithValue("@FirstName", Firstname);
                    db1.sqlcmd.Parameters.AddWithValue("@LastName", Lastname);
                    db1.sqlcmd.Parameters.AddWithValue("@CNIC", cnic);
                    db1.sqlcmd.Parameters.AddWithValue("@Email", email);
                    db1.sqlcmd.Parameters.AddWithValue("@Party", DDParty.SelectedValue);
                    db1.sqlcmd.Parameters.AddWithValue("@PartyJoiningDate", Convert.ToDateTime(tbxpartyjoinson.Text));
                    db1.sqlcmd.Parameters.AddWithValue("@Constituency", DDConstituency.SelectedValue);
                    db1.sqlcmd.Parameters.Add("@success", SqlDbType.Bit);
                    db1.sqlcmd.Parameters["@success"].Direction = ParameterDirection.Output;
                    db1.sqlcmd.Connection = db1.sqlcon;
                    db1.sqlcon.Open();
                    reqid = Convert.ToInt32(db1.sqlcmd.ExecuteScalar());
                    success = Convert.ToBoolean(db1.sqlcmd.Parameters["@success"].Value);




CREATE PROC uspAccountRequest
@success bit out,
@FirstName varchar(20), @LastName varchar(20), @CNIC bigint, @Email varchar(50),@Constituency int,@Party int,@PartyJoiningDate datetime
AS
BEGIN
SET NOCOUNT ON; 
BEGIN TRY
      IF EXISTS(SELECT Email FROM TblAccountRequest WHERE Email = @Email)
      BEGIN
	  SELECT -1 -- Email exists.
	  END
	  ELSE IF EXISTS (SELECT CNIC FROM TblAccountRequest WHERE CNIC = @CNIC)
	  BEGIN
	  SELECT -2 -- CNIC exists
	  END
	  ELSE IF EXISTS(SELECT Email FROM TblUser WHERE Email = @Email)
      BEGIN
	  SELECT -3 -- Email exists.
	  END
	  ELSE IF EXISTS(SELECT NIC FROM TblUser WHERE NIC = @CNIC)
      BEGIN
	  SELECT -4 -- CNIC exists exists.
	  END
	  ElSE	  
BEGIN
Insert into TblAccountRequest (FirstName, LastName, CNIC, Email, Constituency, Party, partyjoninson, RequestDate, IsAccepted)
Values (@FirstName,@LastName,@CNIC,@Email,(SELECT Code FROM TblConstituency WHERE ConstID = @Constituency),(SELECT 	PartyName FROM 	TblParty WHERE 	 PartyId = 	@Party),@PartyJoiningDate,GETDATE(),0) SELECT @@IDENTITY
SELECT SCOPE_IDENTITY() -- Request ID
SET @success = 1
END
END TRY
BEGIN CATCH
SET @success = 0
END CATCH
END

解决方案

" ErrorMessage="Date should be in the format 31/12/2014" Text="*" Font-Names="Calibri" Font-Size="Small" ForeColor="Red"></asp:RegularExpressionValidator>



db1.sqlcmd = new SqlCommand("uspAccountRequest");
                using (SqlDataAdapter sda = new SqlDataAdapter())
                {
                    db1.sqlcmd.CommandType = CommandType.StoredProcedure;
                    db1.sqlcmd.Parameters.AddWithValue("@FirstName", Firstname);
                    db1.sqlcmd.Parameters.AddWithValue("@LastName", Lastname);
                    db1.sqlcmd.Parameters.AddWithValue("@CNIC", cnic);
                    db1.sqlcmd.Parameters.AddWithValue("@Email", email);
                    db1.sqlcmd.Parameters.AddWithValue("@Party", DDParty.SelectedValue);
                    db1.sqlcmd.Parameters.AddWithValue("@PartyJoiningDate", Convert.ToDateTime(tbxpartyjoinson.Text));
                    db1.sqlcmd.Parameters.AddWithValue("@Constituency", DDConstituency.SelectedValue);
                    db1.sqlcmd.Parameters.Add("@success", SqlDbType.Bit);
                    db1.sqlcmd.Parameters["@success"].Direction = ParameterDirection.Output;
                    db1.sqlcmd.Connection = db1.sqlcon;
                    db1.sqlcon.Open();
                    reqid = Convert.ToInt32(db1.sqlcmd.ExecuteScalar());
                    success = Convert.ToBoolean(db1.sqlcmd.Parameters["@success"].Value);




CREATE PROC uspAccountRequest
@success bit out,
@FirstName varchar(20), @LastName varchar(20), @CNIC bigint, @Email varchar(50),@Constituency int,@Party int,@PartyJoiningDate datetime
AS
BEGIN
SET NOCOUNT ON; 
BEGIN TRY
      IF EXISTS(SELECT Email FROM TblAccountRequest WHERE Email = @Email)
      BEGIN
	  SELECT -1 -- Email exists.
	  END
	  ELSE IF EXISTS (SELECT CNIC FROM TblAccountRequest WHERE CNIC = @CNIC)
	  BEGIN
	  SELECT -2 -- CNIC exists
	  END
	  ELSE IF EXISTS(SELECT Email FROM TblUser WHERE Email = @Email)
      BEGIN
	  SELECT -3 -- Email exists.
	  END
	  ELSE IF EXISTS(SELECT NIC FROM TblUser WHERE NIC = @CNIC)
      BEGIN
	  SELECT -4 -- CNIC exists exists.
	  END
	  ElSE	  
BEGIN
Insert into TblAccountRequest (FirstName, LastName, CNIC, Email, Constituency, Party, partyjoninson, RequestDate, IsAccepted)
Values (@FirstName,@LastName,@CNIC,@Email,(SELECT Code FROM TblConstituency WHERE ConstID = @Constituency),(SELECT 	PartyName FROM 	TblParty WHERE 	 PartyId = 	@Party),@PartyJoiningDate,GETDATE(),0) SELECT @@IDENTITY
SELECT SCOPE_IDENTITY() -- Request ID
SET @success = 1
END
END TRY
BEGIN CATCH
SET @success = 0
END CATCH
END


DateTime parsed;
if (DateTime.TryParseExact(tbxpartyjoinson.Text, "dd-MM-yyyy",
    CultureInfo.CurrentCulture, DateTimeStyles.None, out parsed))
{
    db1.sqlcmd.Parameters.AddWithValue("@PartyJoiningDate", parsed);
}else
{
  // error in conversion, set null or date time min value to parameter 
  // or if this is required parameter, show error to user and exit the operation
}


Please sure from calender datetime format, but for correct result use RadDatePicker control this is telerik control, this control return trust data.

please download this DLL for telerik control Telerik.Web.UI.dll.

and use it as following:

<telerik:raddatepicker id="dtpRequestDate" runat="server" allowcustomtext="false" xmlns:telerik="#unknown">
                            ShowPopupOnFocus="True" MarkFirstMatch="true" PopupDirection="TopRight" Skin="Vista"
                            Culture="English (United States)" meta:resourcekey="dtpRequestDateResource1">
                            <calendar usecolumnheadersasselectors="False" userowheadersasselectors="False" viewselectortext="x">
                            </calendar>
                            <dateinput dateformat="dd/MM/yyyy" displaydateformat="dd/MM/yyyy" labelcssclass="">
                                Width="">
                            </dateinput>
                            <datepopupbutton cssclass="" hoverimageurl="" imageurl="" />
                        </telerik:raddatepicker>


这篇关于字符串未被识别为有效的DateTime错误?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆