Преобразовать строку в дату и время - PullRequest
17 голосов
/ 26 декабря 2011

Я занимаюсь разработкой asp.net сайта с использованием vb framework 3.5 .

У меня проблемы с преобразованием строковых данных в дату Я пытался использовать функцию cdate,

У меня есть переменная sdate, которая является строковой переменной, и в ней хранится дата, которая поступает из текстового поля в виде dd / mm / yyyy. Теперь я хочу преобразовать эту строку в переменную Date, так как мне нужно выполнить операции как день или вычтите день.

Пожалуйста, объясните мне, как это сделать. я получаю ошибку в 3-й строке, как String was not recognized as a valid DateTime. Я попытался сделать следующее, но ошибка приходит

Dim sdate As String 
Dim expenddt As Date
expenddt = Date.Parse(edate)
expenddt = expenddt.AddDays(-1)

Но я получаю ошибку как

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

Как мне получить Date из строки?

Ответы [ 5 ]

41 голосов
/ 27 декабря 2011

Вы должны использовать Date.ParseExact или Date.TryParseExact с правильной строкой формата.

 Dim edate = "10/12/2009"
 Dim expenddt As Date = Date.ParseExact(edate, "dd/MM/yyyy", 
            System.Globalization.DateTimeFormatInfo.InvariantInfo)

OR

 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)

OR

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)
3 голосов
/ 09 августа 2017

Попробуйте посмотреть, поможет ли вам следующий код:

Dim iDate As String = "05/05/2005"
Dim oDate As DateTime = Convert.ToDateTime(iDate)
3 голосов
/ 28 июня 2017

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

Вместо этого вы можете попробовать это, чтобы преобразовать указанное строковое представление даты и времени в эквивалентную датуи значение времени

string iDate = "05/05/2005";
DateTime oDate = Convert.ToDateTime(iDate);
MessageBox.Show(oDate.Day + " " + oDate.Month + "  " + oDate.Year );
2 голосов
/ 26 декабря 2011

Попробуйте конвертировать дату следующим образом:

    Dim expenddt as Date = Date.ParseExact(edate, "dd/mm/yyyy", 
System.Globalization.DateTimeFormatInfo.InvariantInfo);

Надеюсь, это поможет.

2 голосов
/ 26 декабря 2011

Попробуйте использовать метод DateTime.ParseExact, в котором вы можете указать как маску даты, так и исходную проанализированную строку.Вы можете прочитать об этом здесь: MSDN: DateTime.ParseExact

...