Cómo analizar y generar objetos DateTime en formato ISO 8601
Existe este servicio web SOAP que me envía objetos de fecha y hora en el siguiente formato
2016-03-29T12:20:35.093-05:00
Ese es el día 29 de marzo del año 2016. Hora: 12: 20: 35.093 (GMT-5).
Quiero poder crear unDateTime
objeto, así:
DateTime.Now
y obtenga la representación de cadena en el formato descrito anteriormente y también la operación inversa, cree un DateTime a partir de una cadena como la dada anteriormente.
He intentado lo siguiente para crear la fecha:
new DateTime(2016, 3, 29, 12, 20, 35, 093, DateTimeKind.Utc)
Sin embargo, no puedo ver cómo especificar GMT-5 allí ...
Tampoco sé cómo convertir un DateTime al formato de cadena especificado.
Usando el código de Nate estoy haciendo lo siguiente:
var d = new DateTimeOffset(2016, 3, 29, 12, 20, 35, 93, TimeSpan.FromHours(-3));
FormatIso8601(d)
Sin embargo, esta llamada regresa: "2016-03-29T15: 20: 35Z" en lugar de:
"2016-03-29T12:20:35.093-03:00"
que es lo que realmente necesito
Creo que esto funciona:
d.ToString("yyyy-MM-ddTHH:mm:ss.fffzzz")