Como analisar e gerar objetos DateTime no formato ISO 8601
Existe esse serviço da web SOAP que me envia objetos de data e hora no seguinte formato
2016-03-29T12:20:35.093-05:00
Este é o dia 29 de março do ano de 2016. Hora: 12: 20: 35.093 (GMT-5).
Eu quero ser capaz de criar umDateTime
objeto, assim:
DateTime.Now
e obtenha a representação da string no formato descrito acima e também a operação inversa, crie um DateTime a partir de uma string como a fornecida acima.
Eu tentei o seguinte para criar a data:
new DateTime(2016, 3, 29, 12, 20, 35, 093, DateTimeKind.Utc)
No entanto, não consigo ver como especificar o GMT-5 lá ...
Também não sei como converter um DateTime para o formato de string especificado.
Usando o código de Nate, estou fazendo o seguinte:
var d = new DateTimeOffset(2016, 3, 29, 12, 20, 35, 93, TimeSpan.FromHours(-3));
FormatIso8601(d)
No entanto, esta chamada está retornando: "2016-03-29T15: 20: 35Z" em vez de:
"2016-03-29T12:20:35.093-03:00"
que é o que eu realmente preciso.
Eu acho que isso funciona:
d.ToString("yyyy-MM-ddTHH:mm:ss.fffzzz")