How to Validate a Date Filed.

R

RSB

Hi Every one

Need some help to Validate the Date i have in the Form.
ALso how to Convert the Date Data i read from table to yyyy/MMM/dd format.

Thanks

RSB
 
C

Cowboy

You can validate a date using Regular Expressions. It is, by far the easiest
way with validation controls. To validate back end, you can also attempt to
cast into a DateTime structure and see if it blows up. While this may seem a
bit strange, the regex to correctly test for months of different lengths
would be rather large. The DateTime object will guarantee 2/29/2005 does not
slip in.

As far as date formatting, this is most easily changed using CultureInfo
objects and setting culture to a country that uses the date format you wish
to use. The other option is to rip the date apart, by parts, and reorder.

--
Gregory A. Beamer
MVP; MCP: +I, SE, SD, DBA

************************************************
Think Outside the Box!
************************************************
 
J

John Oakes

You can use the CompareValidator as well. Set the Operator property to
DataTypeCheck and set the Type property to Date.

-John Oakes
 
R

Richard Petheram

Here yer go ... as recommended by Cowboy, and cut'n'paste directly from an
app I'm writing.

The first test is for an ordinary date, explicitly coded to en-GB 'cos
browsers don't appear to return the right nationality and this is for UK.
The second test is because the users are occasionally lazy about 4 digit
years, the third test allows for year only entry - a requirement of the app
I'm writing, and the fourth test is just getting fancy; nobody will ever
type the word "today" into a text box. To parse other date formats simply
add more tests.

Cheers

Richard
_____________________________________________
Dr. Richard Petheram
AdlZ Ltd.
E-mail: richard_at_adlz.co.uk
_____________Web: www.adlz.co.uk ____________

[ CODE FOLLOWS ]
Public Shared Function ParseDate(ByVal pString As String, Optional ByRef
IsValid As Boolean = True) As DateTime
Dim lDTF As DateTimeFormatInfo =
CultureInfo.CreateSpecificCulture("en-GB").DateTimeFormat
Dim lResult As DateTime

Try
lResult = DateTime.Parse(pString, lDTF).Date
IsValid = True
Return lResult
Catch ex As Exception
End Try

Try
lResult = DateTime.ParseExact(pString, "dd/MM/yy", lDTF).Date
IsValid = True
Return lResult
Catch ex As Exception
End Try

Try
lResult = DateTime.ParseExact(pString, "yyyy", lDTF).Date
IsValid = True
Return lResult
Catch ex As Exception
End Try

If pString.Trim.ToLower = "today" Then
lResult = DateTime.Today.Date
IsValid = True
Return lResult
End If

IsValid = False
Return Nothing
End Function
[ END OF CODE ]
 
R

RSB

Hi John,
so can i also set the Date format for the CompareValidator???

Thanks
RSB
You can use the CompareValidator as well. Set the Operator property to
DataTypeCheck and set the Type property to Date.

-John Oakes
 
R

RSB

Hi Richard,
thanks for the help.
So one question do you execute this code as a part of the Validation and
prompt an error message or it just check for the right error format...
Here yer go ... as recommended by Cowboy, and cut'n'paste directly from an
app I'm writing.

The first test is for an ordinary date, explicitly coded to en-GB 'cos
browsers don't appear to return the right nationality and this is for UK.
The second test is because the users are occasionally lazy about 4 digit
years, the third test allows for year only entry - a requirement of the app
I'm writing, and the fourth test is just getting fancy; nobody will ever
type the word "today" into a text box. To parse other date formats simply
add more tests.

Cheers

Richard
_____________________________________________
Dr. Richard Petheram
AdlZ Ltd.
E-mail: richard_at_adlz.co.uk
_____________Web: www.adlz.co.uk ____________

[ CODE FOLLOWS ]
Public Shared Function ParseDate(ByVal pString As String, Optional ByRef
IsValid As Boolean = True) As DateTime
Dim lDTF As DateTimeFormatInfo =
CultureInfo.CreateSpecificCulture("en-GB").DateTimeFormat
Dim lResult As DateTime

Try
lResult = DateTime.Parse(pString, lDTF).Date
IsValid = True
Return lResult
Catch ex As Exception
End Try

Try
lResult = DateTime.ParseExact(pString, "dd/MM/yy", lDTF).Date
IsValid = True
Return lResult
Catch ex As Exception
End Try

Try
lResult = DateTime.ParseExact(pString, "yyyy", lDTF).Date
IsValid = True
Return lResult
Catch ex As Exception
End Try

If pString.Trim.ToLower = "today" Then
lResult = DateTime.Today.Date
IsValid = True
Return lResult
End If

IsValid = False
Return Nothing
End Function
[ END OF CODE ]
 
J

John Oakes

I don't think so. It seems to understand most formats though. I wouldn't
consider it a full-proof method to validate a date, but it works pretty well
depending on what your need is.

-John
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,766
Messages
2,569,569
Members
45,042
Latest member
icassiem

Latest Threads

Top