字符串未被识别为有效的DateTime

时间:2011-06-10 21:05:36

标签: c# asp.net datetime message

我有一个搜索功能(由我的前任编写),它将日期范围,ID,可用程序作为输入,并在gridview中显示结果。该功能在大多数情况下工作正常(我已经测试过)但是对于我的应用程序的一个用户,它给出了此错误消息。我无法自己重现此错误以便修复它。不知道出了什么问题!

你们可以帮忙吗?

  

抛出了类型'System.Web.HttpUnhandledException'的异常。   System.FormatException:String未被识别为有效的DateTime。   在System.DateTimeParse.Parse(String s,DateTimeFormatInfo dtfi,DateTimeStyles样式)
  at System.Convert.ToDateTime(String value)   位于d:\ SharedServices \ APP \ ViewFollowupWorkload.aspx.cs中的APP_ViewFollowupWorkload.GetFilterString():第1415行   位于d:\ SharedServices \ APP \ ViewFollowupWorkload.aspx.cs中的APP_ViewFollowupWorkload.Page_Load(Object sender,EventArgs e):第268行   在System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp,Object o,Object t,EventArgs e)
   在System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender,EventArgs e)
   在System.Web.UI.Control.OnLoad(EventArgs e)
   在System.Web.UI.Control.LoadRecursive()
   在System.Web.UI.Page.ProcessRequestMain(布尔includeStagesBeforeAsyncPoint,布尔includeStagesAfterAsyncPoint)
   在System.Web.UI.Page.HandleError(例外e)
   在System.Web.UI.Page.ProcessRequestMain(布尔includeStagesBeforeAsyncPoint,布尔includeStagesAfterAsyncPoint)
   在System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint)
   在System.Web.UI.Page.ProcessRequest()
   在System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context)    在System.Web.UI.Page.ProcessRequest(HttpContext context)中    at ASP.app_viewfollowupworkload_aspx.ProcessRequest(HttpContext context)在c:\ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ Temporary ASP.NET Files \ root \ bad754dd \ a11f74ff \ App_Web_viewfollowupworkload.aspx.ae7ca9bd.uwyek3vs.0.cs:第0行    在System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   在System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean& completedSynchronously)

以下是产生错误的.c​​s文件代码:

if (txtDateTo.ToString() != string.Empty)
        {
            if (txtDateTo.ToString().Length > 2)
                strFilter = strFilter + " AND submission_date <= ''" + Convert.ToString(Convert.ToDateTime(txtDateTo.ToString()) + new TimeSpan(1, 0, 0, 0)) + "''";

    }

2 个答案:

答案 0 :(得分:5)

错误表示txtDateTo的传递值不是有效的DateTime - 比如32/11/2011

您可以使用DateTime.TryParse重载之一将代码更改为不会引发异常的代码。这不会解析无效值,但会避免抛出异常 - 在这种情况下你还需要确定要做什么。

答案 1 :(得分:0)

尝试使用ParseExact - 在这里(MSDN

也许他们使用了一些不寻常的日期时间格式。询问您的用户文本框中的哪个值用于转换为日期时间。