Преобразование строки в дату и время
Я разрабатываю сайт asp.net
, используя vb
framework 3.5.
У меня возникают трудности с преобразованием строковых данных в Date
Я пробовал использовать функцию cdate,
У меня есть переменная sdate, которая является строковой переменной, и дата сохраняется в ней, которая поступает из текстового поля как dd/mm/yyyy. Теперь я хочу преобразовать эту строку в переменную Date, поскольку мне нужно выполнить операции как Add a день или вычесть день.
Пожалуйста, расскажите мне, как это сделать. я получаю ошибку на третьей строке как, String was not recognized as a valid DateTime
. Я попытался сделать следующее, но пришла ошибка
Dim sdate As String
Dim expenddt As Date
expenddt = Date.Parse(edate)
expenddt = expenddt.AddDays(-1)
Но я получаю ошибку как
Неверное преобразование из String в тип Date.
Как я могу получить Date
из строки?
Ответы
Ответ 1
Вам нужно использовать Date.ParseExact
или Date.TryParseExact
с правильной строкой формата.
Dim edate = "10/12/2009"
Dim expenddt As Date = Date.ParseExact(edate, "dd/MM/yyyy",
System.Globalization.DateTimeFormatInfo.InvariantInfo)
ИЛИ
Dim format() = {"dd/MM/yyyy", "d/M/yyyy", "dd-MM-yyyy"}
Dim expenddt As Date = Date.ParseExact(edate, format,
System.Globalization.DateTimeFormatInfo.InvariantInfo,
Globalization.DateTimeStyles.None)
ИЛИ
Dim format() = {"dd/MM/yyyy", "d/M/yyyy", "dd-MM-yyyy"}
Dim expenddt As Date
Date.TryParseExact(edate, format,
System.Globalization.DateTimeFormatInfo.InvariantInfo,
Globalization.DateTimeStyles.None, expenddt)
Ответ 2
Никто не упомянул об этом, но в некоторых случаях другой метод не распознает дату и время...
Вместо этого вы можете попробовать это, которое преобразует указанное строковое представление даты и времени в эквивалентное значение даты и времени
string iDate = "05/05/2005";
DateTime oDate = Convert.ToDateTime(iDate);
MessageBox.Show(oDate.Day + " " + oDate.Month + " " + oDate.Year );
Ответ 3
Попробуйте использовать метод DateTime.ParseExact, в котором вы можете указать как маску datetime, так и оригинальную синтаксическую строку.
Вы можете прочитать об этом здесь: MSDN: DateTime.ParseExact
Ответ 4
Попробуйте преобразовать дату следующим образом:
Dim expenddt as Date = Date.ParseExact(edate, "dd/mm/yyyy",
System.Globalization.DateTimeFormatInfo.InvariantInfo);
Надеюсь, что это поможет.
Ответ 5
Попробуйте выяснить, помогает ли вам следующий код:
Dim iDate As String = "05/05/2005"
Dim oDate As DateTime = Convert.ToDateTime(iDate)