9

I'm reading text from a flat file in c# and need to test whether certain values are dates. They could be in either YYYYMMDD format or MM/DD/YY format. What is the simplest way to do this in .Net?

6 Answers 6

30
string[] formats = {"yyyyMMdd", "MM/dd/yy"};
var Result = DateTime.ParseExact(input, formats, CultureInfo.CurrentCulture, DateTimeStyles.None);

or

DateTime result;
string[] formats = {"yyyyMMdd", "MM/dd/yy"};
DateTime.TryParseExact(input, formats, CultureInfo.CurrentCulture, DateTimeStyles.None, out result);

More info in the MSDN documentation on ParseExact and TryParseExact.

Sign up to request clarification or add additional context in comments.

3 Comments

This is better than mine. Didn't know you could do a string array for formats. Very nice!
Even better! Just what I needed.
Make sure you check the return value of DateTime.TryParseExact(...) as that will be the only way you can tell if it succeeded or not.
4

you could try also TryParseExact for set exact format. method, here's documentation: http://msdn.microsoft.com/en-us/library/ms131044.aspx

e.g.

DateTime outDt;
bool blnYYYMMDD = 
     DateTime.TryParseExact(yourString,"yyyyMMdd"
                            ,CultureInfo.CurrentCulture,DateTimeStyles.None
                            , out outDt);

I hope i help you.

1 Comment

Dude! That is so useful, I lost nearly an hour over this, even though I know I've done it before somewhere.
4

DateTime.TryParse method

2 Comments

Since I can't edit your answer, I thought it might help to provide a link to the MSDN article for that method. msdn.microsoft.com/en-us/library/ch92fbc1.aspx
[@Yadyn]: i figured the intellisense would be enough, but ok i added the link to be thorough - thanks!
0

You can also do Convert.ToDateTime

not sure the advantages of either

Comments

0

Using TryParse will not throw an exception if it fails. Also, TryParse will return True/False, indicating the success of the conversion.

Regards...

Comments

0

You can use the TryParse method to check validity and parse at same time.

DateTime output;
string input = "09/23/2008";
if (DateTime.TryParseExact(input,"MM/dd/yy", DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None, out output) || DateTime.TryParseExact(input,"yyyyMMdd", DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None, out output))
{
    //handle valid date
}
else
{
    //handle invalid date
}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.