У меня есть дата, сериализованная как строка «2012-06-20T13: 19: 59.1091122Z»
Используя DateTimeConverter, он преобразуется в объект DateTime {22: 49: 59.1091122} со свойством Kind установлен на «Местный».
например. Следующий тест не проходит:
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);
}
Я немного удивлен этим ... Я ожидал, что объект DateTime, возвращаемый преобразователем, будет в формате UTC.
В документах действительно говорится, что DateTimeConverter использует DateTime.Parse, но я предполагаю, что он не должен использовать DateTimeStyles .RoundtripKind.
Есть ли способ обойти это?