Вы можете использовать DateTime.ParseExact или DateTimeOffset.ParseExact , чтобы указать формат строки даты.
Хотя я не смог быстро выяснить, как соответствовать спецификатору часового пояса (т.е. по Гринвичу). Посмотрите на некоторые результаты Google, показывает, что большинство людей, которые пытаются решить эту проблему, делают это эвристически - составляя список всех часовых поясов и смещений, а затем анализируя строку и заменяя спецификатор часового пояса на +/- смещение или какой-то другой хакерский подход. Хотя ни одно из этих решений не было разработано StackOverflow, так что кто знает, насколько они хороши.
Вот короткий пример, который я написал, с "GMT", вырезанным из строки даты, пытающейся конвертироваться. Если вы можете заменить часовой пояс смещением, добавьте «zzz» в строку формата. Для разбора других форматов, вот страница MSDN Пользовательские строки формата даты и времени , в которой перечислены все из них.
// Parse date and time with custom specifier.
string dateString = "Tue Jan 20 20:47:43 2009";
string format = "ddd MMM dd HH:mm:ss yyyy";
DateTime result;
System.Globalization.CultureInfo provider = System.Globalization.CultureInfo.InvariantCulture;
try
{
result = DateTime.ParseExact(dateString, format, provider);
Console.WriteLine("{0} converts to {1}.", dateString, result.ToString());
}
catch (FormatException)
{
Console.WriteLine("{0} is not in the correct format.", dateString);
}