Member 13471452 Ответов: 2

Строка недопустима дата время C#


string d = Request.Form["StartDate"];
DateTime dt = Convert.ToDateTime(d);
 string e = Request.Form["EndDate"];
 DateTime ed = Convert.ToDateTime(e);
objCoupons.EndDate = ed;
objCoupons.StartDate = dt;


это мой код .
значение d находится в формате dd/mm/yyyy, например, 10/10/2017.
при преобразовании в дату и время он выдает ошибку, которая
при преобразовании strig в datetime проанализируйте строку, чтобы взять дату, прежде чем помещать каждую переменную в объект datetime.

Что я уже пробовал:

я попытался с помощью типа данных datetime разбора
или другая преобразующая вещь и инвариантная культура и т. д.

2 Ответов

Рейтинг:
2

Karthik_Mahalingam

использовать значение datetime.Метод TryParseExact (Система)[^]

string strDate = "10/10/2017";
         DateTime dtTarget = default(DateTime); // (or) DateTime.MinValue , use this for comparision
         if (DateTime.TryParseExact(strDate, "dd/mm/yyyy", CultureInfo.CurrentCulture, DateTimeStyles.None, out dtTarget))
         {
             // use the  dtTarget object to get the parsed dates
         }
         else {
             // show the error message
         }


Рейтинг:
1

Jochen Arndt

Если вы знаете, что строка всегда отформатирована в определенном формате, используйте значение datetime.Метод ParseExact (String, String, IFormatProvider) (System)[^] или DateTime.TryParseExact метод.

Если вы знаете параметры культуры, которые были использованы при создании строки, используйте один из них. значение datetime.Метод Синтаксического Анализа (Система)[^] или соответствующий TryParse методы, принимающие параметр culture info.

Во всех остальных случаях невозможно преобразовать строки в даты.

Чтобы избежать проблем с преобразованием дат, храните их в двоичном формате, когда это возможно, или используйте определенный формат (фиксированный или сохраненный/переданный в качестве дополнительного аргумента).


Thanks7872

+5. Должен быть принят.