2016-11-03 5 views
-1

Пришла небольшая проблема. У меня есть функция, в которой я передаю DATE как String. Эта дата затем передается как параметр хранимой процедуре, где я проверяю ее, и она возвращает значение (0,1), является ли оно действительным или нет. Вот что происходит на коде мудрой ...VB.Net Дата подтверждения

If CheckDateSP(mskAppointment.Text) Then 
    'Great now lets use this date 
else 
    msgbox "Invalid date, re-enter please" 
End if 

Передача в функцию .....

Public Function CheckDateSP(ByVal CheckThisDate As String) As Boolean 
    'Setting Connection strings and all the good stuff 
    'here's where it gives me an error 
    Dim vDate As DateTime = CheckThisDate <----HERE is the error 

End Function 

Теперь вот интересная часть - я только получаю сообщение об ошибке, если я ввести дату, как ...

13/13/2016

Все отлично работает, если я введу йа тес, такие как эти ...

12/12/2017, 10/10/2014

или любая другая дата, пока месяц меньше 13

Я получаю ошибку is ....

ERROR преобразование из строки '13/13/2016 'для ввода даты недействительно.

+1

13/13 ????????? – Steve

+0

Да, я хочу убедиться, что это действительная дата, вы знаете, как пользователи входят в бог, только знает, что. – BobSki

+0

'Dim vDate As DateTime = CheckThisDate', если CheckThisDate передается в виде строки, которую вы не можете просто назначить ей так: конвертировать или TryParse (что обычно даже не компилируется под Option Strict) – Plutonix

ответ

1

Попробуйте

Dim input As String = "13/13/2016" 

Dim dt As DateTime 
If DateTime.TryParseExact(input, "MM/dd/yyyy", New Globalization.CultureInfo("en-US"), Globalization.DateTimeStyles.None, dt) Then 
    MessageBox.Show(String.Format("The string '{0}' parsed to '{1:yyyy-MM-dd hh:mm:ss}'", input, dt)) 
Else 
    MessageBox.Show(String.Format("Couldn't parse '{0}'", input)) 
End If 

Вызов к TryParseExact возвращается верно, когда он находится в правильном формате, и ложно, когда это не так. Обратите внимание: формат, указанный для TryParseExact, представлен в виде месяца/дня/года, и я использовал Globalization.CultureInfo("en-US"), потому что я в США.

+1

Спасибо большое. – BobSki

+1

Слишком плохо, что вы не можете использовать DateTimePicker вместо MaskedTextBox. Он возвращает DateTime, поэтому вам не нужно беспокоиться об этом. – djv

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