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?
Since I can't edit your answer, I thought it might help to provide a link to the MSDN article for that method. http://msdn.microsoft.com/en-us/library/ch92fbc1.aspx
Yadyn
2008-09-23 19:39:50
[@Yadyn]: i figured the intellisense would be enough, but ok i added the link to be thorough - thanks!
Steven A. Lowe
2008-09-25 18:38:24
+20
A:
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.
pb
2008-09-23 19:40:27
This is better than mine. Didn't know you could do a string array for formats. Very nice!
John Sheehan
2008-09-23 19:42:00
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.
Aydsman
2008-09-24 00:11:22
A:
You can also do Convert.ToDateTime
not sure the advantages of either
Sara Chipps
2008-09-23 19:43:22
A:
Using TryParse will not throw an exception if it fails. Also, TryParse will return True/False, indicating the success of the conversion.
Regards...
Josh Stodola
2008-09-23 19:46:48
+2
A:
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.
stefano m
2008-09-23 19:47:43
Dude! That is so useful, I lost nearly an hour over this, even though I know I've done it before somewhere.
Chris Needham
2009-03-31 08:46:31
A:
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
}
Skippy
2008-09-23 19:49:32