字符串未被识别为有效的日期时间[关闭]

Posted

技术标签:

【中文标题】字符串未被识别为有效的日期时间[关闭]【英文标题】:String was not recognised as a valid datetime [closed] 【发布时间】:2014-08-01 21:53:05 【问题描述】:

在我的 asp.net c# 应用程序中,我使用 ajax 日历扩展器来收集日期时间信息。当我尝试提交此页面时,它显示字符串未被识别为有效日期时间。我尝试了不同的转换方法,但没有一种方法适合我。

string date =Request.Form[ txtBookDate.UniqueID];

            DateTime yeer = Convert.ToDateTime(date);

字符串未被识别为有效的日期时间。

描述:执行过程中发生了未处理的异常 当前的网络请求。请查看堆栈跟踪以获取更多信息 有关错误的信息以及它在代码中的来源。

异常详细信息:System.FormatException:无法识别字符串 作为有效的日期时间。

来源错误:

第 78 行:字符串日期 =Request.Form[txtBookDate.UniqueID]; 第 79 行:第 80 行:日期时间 yeer = 转换.ToDateTime(日期);第 81 行:日期时间预订日期 = Convert.ToDateTime(date.ToString());第 82 行:int WedYear = Bookdate.Year;

源文件:D:\Sample Project\AuditoriumNew\AuditoriumNew\Registration.aspx.cs 行:80

堆栈跟踪:

[FormatException:字符串未被识别为有效的 DateTime。] System.DateTimeParse.Parse(String s, DateTimeFormatInfo dtfi, DateTimeStyles 样式)+10404058 System.Convert.ToDateTime(String 值)+83 AuditoriumNew.Index.txtRent_TextChanged(对象发送者, D:\Sample 中的 EventArgs e) 项目\AuditoriumNew\AuditoriumNew\Registration.aspx.cs:80 System.Web.UI.WebControls.TextBox.OnTextChanged(EventArgs e) +116 System.Web.UI.WebControls.TextBox.RaisePostDataChangedEvent() +50 System.Web.UI.WebControls.TextBox.System.Web.UI.IPostBackDataHandler.RaisePostDataChangedEvent() +10 System.Web.UI.Page.RaiseChangedEvents() +132 System.Web.UI.Page.ProcessRequestMain(布尔 includeStagesBeforeAsyncPoint,布尔型 includeStagesAfterAsyncPoint) +1644

版本信息:Microsoft .NET Framework 版本:4.0.30319; ASP.NET 版本:4.0.30319.17929

ajax Extender 的源代码

<asp:Label ID="bok" Text="Booking Date" runat="server"></asp:Label>
                    <asp:TextBox ID="txtBookDate" runat="server" ReadOnly="true"></asp:TextBox>
                    <asp:Image ID="calender" runat="server" ImageUrl="img/cals/calender.png" />
                    <asp:CalendarExtender ID="BookingDate" TargetControlID="txtBookDate" PopupButtonID="calender"
                        runat="server" PopupPosition="TopRight" DaysModeTitleFormat="dd/MM/yyyy" 
                        TodaysDateFormat="dd/MM/yyyy">
                    </asp:CalendarExtender>

实际代码

 protected void txtRent_TextChanged(object sender, EventArgs e)
        
            float CentralAmnt;
            float renter;

            double rent = Convert.ToDouble(txtRent.Text);
            renter = float.Parse(rent.ToString());


            ///Calculate CTValue
            double CTValue = Convert.ToDouble(12.36 / 100);
            double CTax = CTValue;
            float CentralTax = float.Parse(CTax.ToString());

            CentralAmnt = renter * CentralTax;


            ///Calculate LT Value

            double LTax = 0.15;
            float LuxTax = float.Parse(LTax.ToString());
            float LuxAmnt = renter * LuxTax;
            string s = txtBookDate.Text;
            DateTime yeer;

             yeer = Convert.ToDateTime(s);

            //DateTime yeer = Convert.ToDateTime(s);
            DateTime Bookdate = Convert.ToDateTime(yeer.ToString());
            int WedYear = Bookdate.Year;
            if (WedYear < 2014)
            
                float TotAmnt = renter + LuxAmnt;

                txtTotal.Text = TotAmnt.ToString();
                LuxuaryTaxAmnt = LuxAmnt;


            
            else
            
                float TotAmnt = renter + CentralAmnt + LuxAmnt;

                txtTotal.Text = TotAmnt.ToString();
                LuxuaryTaxAmnt = LuxAmnt;
                CentralTaxAmnt = CentralAmnt;
            
        

【问题讨论】:

放一个断点,看看你在date字符串中得到了什么值。 不,@Habib 我认为我们应该自己判断这个价值:-) 您能提供您的 ASPX 页面代码吗? 调试 20 个问题。为什么人们很难帮助你?在您的问题中包含所有相关信息。就目前而言,您的问题甚至不是问题。这只是一个悲伤的故事的叙述。 确保 1:提供重现问题的完整示例(即DateTime.Parse("YerExactTextHere")),2:在发布您的问题之前阅读一些类似的问题***.com/…。 【参考方案1】:

如果 txtBookDate 为空并且您决定在 txtRent 中输入一个值,那么您将继续收到“字符串未被识别为有效日期时间”错误,因为 txtBookDate 为 EMPTY = NULL...或者如果您确实插入日期,请确保其格式合理。

所以问题是:在为 txtRent 输入值之前,是否在 txtBookDate 中输入了值?

您的代码在 txtRent_TextChanged 期间运行是否有原因?这是唯一的方法吗?

尝试以下操作,至少在这里我确保 yeer 具有“默认”值,这样您就不会收到“字符串未被识别为有效的 DateTime”。在这种情况下:

DateTime yeer;

if (!string.IsNullOrEmpty(txtBookDate.Text))
    yeer = Convert.ToDateTime(txtBookDate.Text);
else
    yeer = new DateTime(9999, 12, 31);

【讨论】:

以上是关于字符串未被识别为有效的日期时间[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

字符串“04/28/2021 04:25p”未被识别为有效的日期时间

DatePicker 绑定到 DateTime。 “字符串未被识别为有效的日期时间”

c# datetime.parseexact 字符串未被识别为有效的日期时间 [重复]

SQLite 和 .net 字符串未被识别为有效的 DateTime

尝试使用linq过滤数据时,字符串未被识别为有效的DateTime

JSON.NET:字符串 '7/1/20 14:15' 未被识别为有效的 DateTime