tengo una fecha serializado como una cadena "2012-06-20T13: 19: 59.1091122Z"DateTimeConverter la conversión de cadena UTC
Utilizando el DateTimeConverter, esto se convierte en un objeto DateTime {22: 49: 59.1091122} con la propiedad Kind establecida en "Local".
por ejemplo. La siguiente prueba falla:
private static readonly DateTime UtcDate = new DateTime(634757951991091122, DateTimeKind.Utc);
private const string UtcSerialisedDate = "2012-06-20T13:19:59.1091122Z";
[Test]
public void DateTimeConverter_Convert_From_Utc_String()
{
// Arrange
var converter = TypeDescriptor.GetConverter(typeof(DateTime));
// Act
var result = converter.ConvertFrom(UtcSerialisedDate);
// Assert
Assert.AreEqual(UtcDate, result);
Assert.AreEqual(DateTimeKind.Utc, ((DateTime)result).Kind);
}
Estoy un poco sorprendido por esto ... lo que habría esperado que el objeto DateTime devuelto por el convertidor sería en UTC.
Los documentos dicen que DateTimeConverter usa DateTime.Parse, pero supongo que no debe usar la opción DateTimeStyles.RoundtripKind.
¿Hay alguna forma de evitar esto?