Подтвердить что ты не робот

Преобразование строки в дату и время

Я разрабатываю сайт 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 из строки?

4b9b3361

Ответ 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)