Solved

Validation of string date format dd/mm/yyyy

Posted on 2007-11-28
10
770 Views
Last Modified: 2008-02-01
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).
0
Comment
Question by:Sharalynn
  • 4
  • 3
  • 2
  • +1
10 Comments
 
LVL 17

Expert Comment

by:pssandhu
Comment Utility
This should help you out:
Link: http://www.dotnetspider.com/kb/Article341.aspx

P.
0
 

Author Comment

by:Sharalynn
Comment Utility
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
 
LVL 38

Accepted Solution

by:
PaulHews earned 500 total points
Comment Utility
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
 
LVL 18

Expert Comment

by:jcoehoorn
Comment Utility
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
 
LVL 18

Expert Comment

by:jcoehoorn
Comment Utility
Oops:  confused some C# and VB in the same snippet.  Bad programmer, no cookie ;)
0
How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

 
LVL 38

Expert Comment

by:PaulHews
Comment Utility
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
 
LVL 38

Expert Comment

by:PaulHews
Comment Utility
>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
 
LVL 18

Expert Comment

by:jcoehoorn
Comment Utility
>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
 
LVL 38

Expert Comment

by:PaulHews
Comment Utility
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
 

Author Comment

by:Sharalynn
Comment Utility
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

Featured Post

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

If you're writing a .NET application to connect to an Access .mdb database and use pre-existing queries that require parameters, you've come to the right place! Let's say the pre-existing query(qryCust) in Access takes a Date as a parameter and l…
Microsoft Reports are based on a report definition, which is an XML file that describes data and layout for the report, with a different extension. You can create a client-side report definition language (*.rdlc) file with Visual Studio, and build g…
Get a first impression of how PRTG looks and learn how it works.   This video is a short introduction to PRTG, as an initial overview or as a quick start for new PRTG users.
This video gives you a great overview about bandwidth monitoring with SNMP and WMI with our network monitoring solution PRTG Network Monitor (https://www.paessler.com/prtg). If you're looking for how to monitor bandwidth using netflow or packet s…

772 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now