Строка не была распознана как действительный DateTime - PullRequest
0 голосов
/ 11 июня 2011

У меня есть функция поиска (написанная моим предшественником), которая принимает диапазон дат, идентификатор, доступные программы в качестве входных данных и отображает результаты в виде таблицы. Функция работает нормально большую часть времени (я проверял это), но для одного из пользователей моего приложения это сообщение об ошибке. Я не могу воспроизвести эту ошибку самостоятельно, чтобы исправить ее. Не знаю что не так!

Можете ли вы, ребята, помочь?

Исключение типа 'System.Web.HttpUnhandledException' было сгенерировано. System.FormatException: строка не была распознана как допустимый DateTime. в System.DateTimeParse.Parse (String s, DateTimeFormatInfo dtfi, стили DateTimeStyles)
в System.Convert.ToDateTime (строковое значение) в APP_ViewFollowupWorkload.GetFilterString () в d: \ SharedServices \ APP \ ViewFollowupWorkload.aspx.cs: строка 1415
в APP_ViewFollowupWorkload.Page_Load (Отправитель объекта, EventArgs e) в d: \ SharedServices \ APP \ ViewFollowupWorkload.aspx.cs: строка 268
в System.Web.Util.CalliHelper.EventArgFunctionCaller (IntPtr fp, Объект o, Объект t, EventArgs e)
в System.Web.Util.CalliEventHandlerDelegateProxy.Callback (Отправитель объекта, 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 (логическое значение includeStagesBeforeAsyncPoint, логическое значение includeStagesAfterAsyncPoint)
в System.Web.UI.Page.ProcessRequest ()
в System.Web.UI.Page.ProcessRequestWithNoAssert (контекст HttpContext) в System.Web.UI.Page.ProcessRequest (контекст HttpContext)
в ASP.app_viewfollowupworkload_aspx.ProcessRequest (контекст HttpContext) в c: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ Временные файлы ASP.NET \ root \ bad754dd \ a11f74ff \ App_Web_viewfollowupworkload.aspx.ae7cayekv.s3: строка 0
в System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute ()
в System.Web.HttpApplication.ExecuteStep (шаг IExecutionStep, логическое и завершено синхронно)

Вот код файла .cs, где генерируется ошибка:

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 ]

5 голосов
/ 11 июня 2011

Ошибка указывает, что значения txtDateTo не являются действительными DateTime - скажем, 32/11/2011.

Вы можете изменить код на что-то, что не вызовет исключение, используя одну из перегрузок DateTime.TryParse. Это не будет анализировать недопустимые значения, но исключит возникновение исключения - вам все равно нужно определить, что делать в таком случае.

0 голосов
/ 11 июня 2011

Попробуйте вместо этого использовать ParseExact ( MSDN ) .

Возможно, они используют какой-то необычный формат даты и времени. Спросите своего пользователя, какое значение в текстовом поле используется для преобразования в datetime.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...