CultureInfo enUS = new CultureInfo("en-US");
string dateString;
DateTime dateValue;
dateString = " 5/01/2009 8:30 AM";
dateValue = DateTime.ParseExact(dateString, "g", enUS, DateTimeStyles.None); //Ошибка
dateValue = DateTime.ParseExact(dateString, "g", enUS, DateTimeStyles.AllowLeadingWhite); //5/1/2009 8:30:00 AM (Unspecified)
...
dateString = "5/01/2009 09:00";
dateValue = DateTime.ParseExact(dateString, "M/dd/yyyy hh:mm", enUS, DateTimeStyles.None); //5/1/2009 9:00:00 AM (Unspecified)
dateValue = DateTime.ParseExact(dateString, "MM/dd/yyyy hh:mm", enUS, DateTimeStyles.None); //Ошибка
...
dateString = "05/01/2009 01:30:42 PM -05:00";
dateValue = DateTime.ParseExact(dateString, "MM/dd/yyyy hh:mm:ss tt zzz", enUS, DateTimeStyles.None); //5/1/2009 11:30:42 AM (Local)
dateValue = DateTime.ParseExact(dateString, "MM/dd/yyyy hh:mm:ss tt zzz", enUS, DateTimeStyles.AdjustToUniversal); //5/1/2009 6:30:42 PM (Utc)
...
dateString = "2008-06-11T16:11:20.0904778Z";
dateValue = DateTime.ParseExact(dateString, "o", CultureInfo.InvariantCulture, DateTimeStyles.None); //6/11/2008 9:11:20 AM (Local)
dateValue = DateTime.ParseExact(dateString, "o", CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind); //6/11/2008 4:11:20 PM (Utc)