Validation of string date format dd/mm/yyyy

I searched and I found a few regex solution, but is there an alternative 'normal' way of doing that?

Basically need to validate if it is a valid xx/xx/xxxx, month date (jan 31 days april 30days) and if its a leap year or no (for feb 28or29days).
SharalynnAsked:
Who is Participating?
 
PaulHewsConnect With a Mentor Commented:
TryParseExact sample:
Imports System.Globalization
 
Public Class Form1
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim DateString As String = "31/1/2007"
        Dim dt As Date
        If DateTime.TryParseExact(DateString, "d/M/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, dt) Then
            MsgBox(dt.ToString("d"))
        Else
            MsgBox("invalid")
        End If
    End Sub
 
 
End Class

Open in new window

0
 
pssandhuCommented:
This should help you out:
Link: http://www.dotnetspider.com/kb/Article341.aspx

P.
0
 
SharalynnAuthor Commented:
Thanks, however I have the same problem as the guy over there as the code does not work. It just create the day, month, year perfectly even with 1/1/1. It does not throw any exception. Big problem!
0
Introducing Cloud Class® training courses

Tech changes fast. You can learn faster. That’s why we’re bringing professional training courses to Experts Exchange. With a subscription, you can access all the Cloud Class® courses to expand your education, prep for certifications, and get top-notch instructions.

 
Joel CoehoornDirector of Information TechnologyCommented:
Do you really need to be so specific on the date format you accept?
DateTime.TryParse() will tell you whether any string can be converted into a valid DateTime, and if you need to spit it back out in a specific format it's easy enough to then use the correct format string with the resulting DateTime object:

Dim input As String = GetDateTimeFromUser() 'imaginary function to get input
DateTime result;
If DateTime.TryParse(input, result) Then
  ' Success
Else
  Throw New Exception("Invalid DateTime")
End If
0
 
Joel CoehoornDirector of Information TechnologyCommented:
Oops:  confused some C# and VB in the same snippet.  Bad programmer, no cookie ;)
0
 
PaulHewsCommented:
If you change the format string to dd/MM/yyyy then you will see that you get "invalid" for dates like 31/1/2007, but it will validate on 31/01/2007.  You can also specify an array of string formats if you wish to support more than one.  
0
 
PaulHewsCommented:
>Do you really need to be so specific on the date format you accept?

Well, how else do you figure out what someone means when they enter 10/11/2007.  Do they mean 11th day 10th month, or 10th month, 11th day?
0
 
Joel CoehoornDirector of Information TechnologyCommented:
>Well, how else do you figure out what someone means when they enter 10/11/2007

It uses the Culture of the current system to decide how to interpret it, though I concede this can be a problem for web apps where that information may not be available.  
0
 
PaulHewsCommented:
I see what you mean, but either way, you still have to be specific in terms of letting the user know which format is accepted.
0
 
SharalynnAuthor Commented:
Thanks, very useful and rather clear. I also used "And DateTime.Today > DateString" if you want to make sure they do not enter a future date!
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.