2013-10-24 2 views
0

У меня есть gridview, загруженный некоторыми строками данных со строкой, имеющей значение времени (например, «10: 30 PM»). Когда я пытаюсь вставить все данные сетки в базу данных, используя цикл foreach, рассматривая каждую строку в сетке, я хотел бы вставить строку, имеющую значение времени, как datetime varaible в базе данных SQL. Таким образом, я попытался преобразовать строку вПреобразование строки значения времени в объект Datetime

Convert.ToDateTime(row.Cells(4).Value) 

Но возникает исключение формата

Строка не был признан действительным DateTime.

Любая идея, чтобы преобразовать эту строку в DATETIME

ответ

0

Дата/время допускало различные форматы и, таким образом, вы должны добавить некоторую дополнительную информацию для того, чтобы позволить VB.NET знать, что вы имеете в виду именно. Примеры (правильно/неправильно) альтернативы:

Dim test1 As Date = Convert.ToDateTime("1-13-2000", New System.Globalization.CultureInfo("en-US")) 'OK 
Dim test2 As Date = Convert.ToDateTime("1-13-2000", New System.Globalization.CultureInfo("en-GB")) 'Error 
Dim test3 As Date = Date.ParseExact("10:30 pm", "hh:mm tt", System.Globalization.CultureInfo.InvariantCulture) 'OK 
Dim test4 As Date = Date.ParseExact("9:30 pm", "hh:mm tt", System.Globalization.CultureInfo.InvariantCulture) 'ERROR 

Convert.ToDateTime учитывает формат соответствующего CultureInfo; если вы не укажете ничего, что предполагается, что вы хотите использовать значение по умолчанию на данном компьютере. Лучше всего всегда указывать нужную вам культуру. Другая альтернатива у вас есть точный формат, например, ParseExact.

0

Это может быть потому, что ваше значение может быть пустой строкой.

Поставьте условие типа

if(row.Cells(4).Value <> null AND row.Cells(4).Value <> string.Empty) 
    Convert.ToDateTime(row.Cells(4).Value) 
Смежные вопросы