2010-01-08 6 views
1

Мне нужно преобразовать строки в формат даты. это требование, если выбран текущий месяц, дата должна быть получена. если какой-либо другой месяц выбран, то он должен быть первым в этом месяце. Данные, поступающие в «Январь 2010», «Февраль 2010» и так далее. , но она должна быть вставлена ​​в SQL базу данных сервера, как 01/01/10 или 02/01/10преобразовать строку в datetime vb.net

ответ

0

DateTime.ParseExact Method (String, String, IFormatProvider)

DateTime dt = DateTime.ParseExact(dateString,formatString); 
dt = (dt.Month == DateTime.Now.Month) ? DateTime.Now : dt; 

Если ваш вызов этого alot в производительности цикла может быть лучше, если вы только вызываете DateTime.Now один раз и сохраняете его в переменной перед сравнением, поскольку DateTime.Now является довольно дорогостоящей операцией.

Если столбец SQL-сервера имеет тип DateTime, вам не нужно беспокоиться о формате, но передать объект DateTime, и он будет работать.

3

Я думаю, что следующий должен делать эту работу за вас:

Dim theDate As DateTime = DateTime.ParseExact(input, "MMMM yyyy", CultureInfo.InvariantCulture) 

InvariantCulture гарантирует, что названия месяцев может быть обработано правильно.

+0

как я объявляю cultinfo? он говорит, что cultinfo не объявлен – sinae

+0

@sinae: добавьте 'Импорт System.Globalization' в операторы импорта в начале файла. –

0

Вы можете использовать эту функцию:

Private Function GetDate(ByVal source As String) As DateTime 
    Dim converted = DateTime.Parse(source) 
    If (converted.Year.Equals(DateTime.Now.Year) And converted.Month.Equals(DateTime.Now.Month)) Then 
     GetDate = DateTime.Now 
    Else 
     GetDate = converted 
    End If 
End Function 

он мог проанализированные прошел месяц + год значения, как "апрель 2010".

Смежные вопросы