2015-04-06 2 views
1

У меня есть приложение VB.Net, где пользователь вводит начало и дату окончания. По какой-то причине функция IsDate в приведенном ниже коде позволяет «6:00 AM» пройти как действительную дату?IsDate позволяет «6:00 AM» подтвердить дату?

Как исправить это?

If IsDate(evdetail.ToDate) Then 
     .DateTimeEnded = evdetail.ToDate 
Else 
     .DateTimeEnded = "12/31/2099 6:00:00 AM" 
End If 
+2

'evdetail.ToDate' является преобразование его на сегодняшний день – Plutonix

+0

@Plutonix - ToDate это значение поля в коде. Есть две коробки: FromDate и ToDate. IsDate проверяет действительную дату и не разрешает 6:00 AM? –

+0

Что такое 'evdetail'? – Plutonix

ответ

3

Согласно 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 
+0

Я читал, что я не уверен, как это сделать, если это не полная дата, мм/дд/гггг hh: mm tt? –

+1

еще одна причина избежать этих устаревших функций VB. – Plutonix

+0

Функции '' DateTime'' также могут не работать в зависимости от того, что делает '.ToDate'. Независимо от 'evdetail', это может быть просто время, но' .ToDate' подразумевает трансформацию. – Plutonix

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