Reputation: 12842
I have some automated C# windows services to upload text to the database. The 'text' is generated by a third party application where we don't have any control.
My issue is that the text contains a column for date. The default date format is DD/MM/YY. But some times we get MM/YY/DD
Is there any tricky way to identify or convert MM/YY/DD to DD/MM/YY. The data might only contain date for three, four days. So I plan to check if the date is in tolerance with three or four days, it will be accepted. Other wise manually correct it. For example,
14/08/17 is accepted
08/17/14 is not accepted. Logic should convert this to 14/08/17
Any ideas ?
Upvotes: 1
Views: 1420
Reputation: 841
You could try and parse with the good format, if it goes ok there is no problem, it will return the date. If it goes wrong, you tryparse with the 'secondary format'. If everything goes ok, it will return the date.
Note that if the parsed date it's more than 3 days ahead, it won't count as a valid date and will return null.
if(DateTime.TryParseExact(input, "dd/MM/yy", CultureInfo.InvariantCulture, DateTimeStyles.None, out dateValue)
{
int daysBetween = (dateValue-DateTime.Now).Days
if(daysBetween < 4)
{
return dateValue
}
}
if(DateTime.TryParseExact(input, "MM/yy/dd", CultureInfo.InvariantCulture, DateTimeStyles.None, out dateValue)
{
int daysBetween = (dateValue-DateTime.Now).Days
if(daysBetween < 4)
{
return dateValue;
}
}
return null
If null gets returned, you'll have an invalid date, if not, that will be the parsed date
Upvotes: 2