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
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.
3 Comments
John Sheehan
This is better than mine. Didn't know you could do a string array for formats. Very nice!
JoshL
Even better! Just what I needed.
Adrian Clark
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.
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
NeedHack
Dude! That is so useful, I lost nearly an hour over this, even though I know I've done it before somewhere.
DateTime.TryParse method
2 Comments
Sean Hanley
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
Steven A. Lowe
[@Yadyn]: i figured the intellisense would be enough, but ok i added the link to be thorough - thanks!
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
}