字符串未被识别为有效的日期时间[关闭]
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