У меня есть старый сценарий VB, который был преобразован для запуска в VB .NET давным-давно, это беспорядок, но я не могу получить разрешение переписать его еще.DateTime.TryParse возвращает неверный ответ (IMO)
В нем есть функция, которая берет строку и пытается правильно ее обработать на основе ее содержимого.
Первоначально она была написана как:
Public Shared Function fx(ByVal _str As String) As String
If IsDate(_str) Then
'Dates have to be formated just right for MySQL to accept them
fx = DatePart("yyyy", _str) & "-" & DatePart("m", _str) & "-" & DatePart("d", _str)
ElseIf IsNumeric(_str) Then
'Numbers go in just fine
fx = _str
ElseIf Len(_str) > 0 Then
'If it's not a date and not a number then treat it as a text field and filter it so that MySQL will take it
_str = Trim(_str) 'First trim off any leading and trailing spaces
_str = Replace(_str, "\", "\\") 'Change all \ to \\
_str = Replace(_str, "'", "''") 'Change all ' to ''
fx = _str
Else
fx = ""
End If
End Function
Моя проблема возникает, когда я использую проход FX значение «11,16» и он говорит: «О, да, это дата - 2015/11/16»
Я пробовал использовать success = DateTime.TryParse(_str,tempDate)
, но он ведет себя одинаково.
Каков наилучший способ сделать это, если _str, передаваемый в может быть чем угодно от пустой строки до даты до суммы в долларах на адрес улицы? Очевидным является переписать вызывающий код, но с устаревшим кодом, который не очень практичен. Любое предложение оценили.
Спасибо!
Вы попробовали 'TryParseExact'? – OneFineDay
Я бы использовал 'TryParseExact' и поставлял массив форматов, которые составляют приемлемый' DateTime' –
. Вы можете попробовать проверить IsNumeric перед IsDate – Joe