Формат строки для даты и времени с часовым поясом

У меня есть string s = "May 16, 2010 7:20:12 AM CDT, который я хочу преобразовать в объект DateTime. В приведенном ниже коде я получаю формат даты, который не может быть преобразован при попытке проанализировать текст с известным форматом.

timeStamp = matches[0].Groups[1].Value;
dt = DateTime.ParseExact(timeStamp, "MMM dd, yyyy H:mm:ss tt", null);

Часовой пояс приходит как CDT UTC... и я думаю, что вызывает проблему или мой формат?

Ответ 2

Убедитесь, что DateTime недвусмысленно DateTimeKind.Utc. Избегайте "GMT", это двусмысленно для перехода на летнее время.

    var dt = new DateTime(2010, 1, 1, 1, 1, 1, DateTimeKind.Utc);
    string s = dt.ToLocalTime().ToString("MMM dd, yyyy HH:mm:ss tt \"GMT\"zzz");

он дает результат: 31 декабря 2010 19:01:01 pm GMT-06: 00

Подробнее см. ссылку