2016-11-03 6 views
-1

小さな問題を克服しました - 私はDATEをStringとして渡す関数を持っています。このDateは、それを検証するストアドプロシージャにパラメータとして渡され、有効かどうかにかかわらず値(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

すべてが完全に正常に動作しますこのようなTES ...

2017年12月12日、2014年10月10日

または限り、月が13未満

私は取得エラーです他の任意の日付

文字列'13/13/2016 'からタイプ日付に変換するERRORが有効ではありません。

+1

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

+0

はい、私はこれが有効な日付であることを確認したいと思っています。あなたはユーザーが神を入力する方法を知っています。 – BobSki

+0

CheckThisDateが文字列として渡された場合は、DateTime = CheckThisDateとなります(Option Strictの下でコンパイルされていなくても変換します) – Plutonix

答えて

1

TryParseExactにこの

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 

コールを試してみて、それがないとき、それは正しい形式でだときtrueを返し、偽。 TryParseExactに提供される形式は月/日/年の形式であり、私が米国にいるのでGlobalization.CultureInfo("en-US")を使用しました。

+1

ありがとう、この素晴らしい。 – BobSki

+1

MaskedTextBoxの代わりにDateTimePickerを使用することはできません。それはあなたがこれを気にする必要はないので、DateTimeを返します。 – djv