Вы должны иметь возможность форматировать его с помощью DateTimeOffset
и K
custom format specifier. Затем вы можете преобразовать это в DateTime
, если хотите. Пример кода:
using System;
using System.Globalization;
class Test
{
static void Main()
{
string text = "2013-07-03T02:16:03.000+01:00";
string pattern = "yyyy-MM-dd'T'HH:mm:ss.FFFK";
DateTimeOffset dto = DateTimeOffset.ParseExact
(text, pattern, CultureInfo.InvariantCulture);
Console.WriteLine(dto);
}
}
Одна вещь, чтобы отметить, что это плохо назвали - это на самом деле не часовой пояс, это просто смещение UTC. Это не Фактически сообщит вам оригинальный часовой пояс. (Там может быть несколько различных временных зон наблюдения и то же смещение в то же время.)
Или с Noda Time (нестабильной версии, которая станет 1.2 довольно скоро):
string text = "2013-07-03T02:16:03.000+01:00";
OffsetDateTimePattern pattern = OffsetDateTimePattern.ExtendedIsoPattern;
OffsetDateTime odt = pattern.Parse(text).Value;
Console.WriteLine(odt);
возможный дубликат [DateTime.ParseExact , Игнорировать часовой пояс] (http://stackoverflow.com/questions/6676856/datetime-parseexact-ignore-the-timezone) – V4Vendetta