Как анализировать и генерировать объекты DateTime в формате ISO 8601

Существует этот веб-сервис SOAP, который отправляет мне объекты даты и времени в следующем формате.

2016-03-29T12:20:35.093-05:00

Это 29 марта 2016 года. Час: 12: 20: 35.093 (GMT-5).

Я хочу быть в состоянии создатьDateTime объект, как это:

DateTime.Now

и получите строковое представление в формате, описанном выше, а также обратную операцию, создайте DateTime из строки, подобной приведенной выше.

Я попробовал следующее, чтобы создать дату:

new DateTime(2016, 3, 29, 12, 20, 35, 093, DateTimeKind.Utc)

Тем не менее, я не могу не видеть, как указать там GMT-5 ...

Я не знаю, как преобразовать DateTime в указанный формат строки, либо.

Используя код Нейта, я делаю следующее:

var d = new DateTimeOffset(2016, 3, 29, 12, 20, 35, 93, TimeSpan.FromHours(-3));

FormatIso8601(d)

Однако этот вызов возвращается: «2016-03-29T15: 20: 35Z» вместо:

"2016-03-29T12:20:35.093-03:00"

что мне действительно нужно

Я думаю, что это работает:

        d.ToString("yyyy-MM-ddTHH:mm:ss.fffzzz")

Ответы на вопрос(3)

Ваш ответ на вопрос