У меня странная проблема в vb.net.Преобразование строкового формата в Date с помощью ParseExact
Таким образом, у меня нет никаких проблем преобразования строки в дату, используя ParseExact, какой формат даты и CultureInfo:
Dim f As String = "30-mar-2012"
' Value of f is "30/03/2012"
xdate = DateTime.ParseExact(
f,
"dd-MMM-yyyy",
System.Globalization.CultureInfo.InvariantCulture)
Проблема начинается при использовании DataReader
While dr.Read
Dim f As String = String.Format("{0:dd-MMM-yyyy}", dr.Item("fec_estado_insc")))
' Value of f is "30-mar-2012"
xdate = DateTime.ParseExact(
f,
"dd-MMM-yyyy",
System.Globalization.CultureInfo.InvariantCulture)
End While
Получить сообщение об ошибке: " Строка не была признана действительной DateTime «
Как вы видите, переменная f - это строка, ее значение приходит из строки datareader, но является строкой.
Как это возможно?
EDIT
Я нашел хак способ получить дату в формате "дд-MMM-YYYY" с помощью Чана. Я должен был создать эту функцию:
Public Shared Function Giveme_Date_dd_MMM_yyyy(ByVal XobjValue As Object) As Nullable(Of Date)
If XobjValue Is System.DBNull.Value Then
Return Nothing
ElseIf XobjValue Is Nothing Then
Return Nothing
ElseIf XobjValue.ToString.Trim.Equals("") Then
Return Nothing
End If
Dim f As String = String.Format("{0:dd-MMM-yyy}", XobjValue)
Dim dtResult As Date, xdate As Date
If DateTime.TryParse(f, dtResult) Then
xdate = CDate(dtResult.ToString("f", System.Globalization.CultureInfo.InvariantCulture))
End If
Return xdate
End Function
И в базе данных, должны были изменить запрос SELECT, таким образом:
OPEN r_cursor FOR
SELECT to_char(fec_estado_insc,'dd/mm/yyyy') AS fec_estado_insc,
blah
blah
blah
Однако исходная проблема сохраняется. Некоторая ошибка vb.net?
Возможно, попробуйте это? 'Dim f As String = CStr (String.Format (" {0: dd-MMM-yyy} ", dr.Item (" fec_estado_insc ")). Clone())' –
Получите такую же ошибку: "String не был распознан как действительный DateTime ". Это странно. Если я задаю непосредственно переменную f = "30-mar-2012", ошибки не будет. Но при заполнении значения f из DataReader появляется ошибка. – Delmonte
Как только вы установили значение 'f', это строка. Строка представляет собой строку, независимо от того, как она была установлена или получена; это не повлияет на вашу следующую строку. Вы делаете что-то неправильно ... просто попробуйте пройти через код по строчке и проверить значения переменных. –