Согласно MSDN, время только строка "6:00 AM" считается действительным по IsDate
.
Из статьи:
Dim firstDate, secondDate As Date
Dim timeOnly, dateAndTime, noDate As String
Dim dateCheck As Boolean
firstDate = CDate("February 12, 1969")
secondDate = #2/12/1969#
timeOnly = "3:45 PM"
dateAndTime = "March 15, 1981 10:22 AM"
noDate = "Hello"
dateCheck = IsDate(firstDate)
dateCheck = IsDate(secondDate)
dateCheck = IsDate(timeOnly) ' <-------
dateCheck = IsDate(dateAndTime)
dateCheck = IsDate(noDate)
В предыдущем примере, IsDate возвращает Правда в течение первых четырех вызовов и Ложный для последнего вызова.
Если вы хотите, чтобы он не соответствовал вашему комментарию, вместо этого используйте вместо этого DateTime.TryParseExact.
Что-то вдоль этих строк будет делать то, что вы хотите, однако я исхожу из предположения, что evdetail.ToDate
и .DateTimeEnded
являются строковыми типами и что желаемый язык является en-US.
Dim dt As DateTime
Dim ci As New CultureInfo("en-US")
If DateTime.TryParseExact(evdetail.ToDate, "MM/dd/yyyy hh:mm tt", ci, DateTimeStyles.None, dt) Then
.DateTimeEnded = evdetail.ToDate
Else
.DateTimeEnded = "12/31/2099 6:00:00 AM"
End If
'evdetail.ToDate' является преобразование его на сегодняшний день – Plutonix
@Plutonix - ToDate это значение поля в коде. Есть две коробки: FromDate и ToDate. IsDate проверяет действительную дату и не разрешает 6:00 AM? –
Что такое 'evdetail'? – Plutonix