public static DateTime GetDateTime(string dateString)
{
var trimmedString = dateString.Trim();
if (trimmedString == TODAY)
{
return DateTime.Today;
}
if (trimmedString.Contains(TODAY))
{
var dayString = trimmedString.Substring(5, trimmedString.Length - 5);
var days = int.Parse(dayString);
return DateTime.Today.AddDays(days);
}
if (isDayOfWeek(dateString))
{
return convertToDateFromDayAndTime(dateString);
}
if (iso8601Expression.IsMatch(trimmedString))
{
//Thank you jon skeet : http://stackoverflow.com/questions/10029099/datetime-parse2012-09-30t230000-0000000z-always-converts-to-datetimekind-l
DateTime result;
var success = DateTime.TryParseExact(trimmedString, "yyyy-MM-dd'T'HH:mm:ss.fffffff'Z'", CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal | DateTimeStyles.AdjustToUniversal, out result);
if (success) return result;
}
return DateTime.Parse(trimmedString);
}