Tôi có một ngày serialized như là một chuỗi "2012-06-20T13: 19: 59.1091122Z"DateTimeConverter chuyển đổi từ chuỗi UTC
Sử dụng DateTimeConverter, điều này được chuyển đổi sang một đối tượng DateTime {22: 49: 59,1091122} với thuộc tính Kind được đặt thành "Địa phương".
ví dụ: Kiểm tra sau không thành công:
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);
}
Tôi hơi ngạc nhiên bởi điều này ... Tôi đã mong đợi rằng đối tượng DateTime được trình chuyển đổi trả về sẽ là UTC.
Các tài liệu nói rằng DateTimeConverter sử dụng DateTime.Parse, nhưng tôi đoán nó không được sử dụng tùy chọn DateTimeStyles.RoundtripKind.
Có cách nào xung quanh vấn đề này không?