我有一个日期序列化为字符串 "2012-06-20T13:19:59.1091122Z"。
使用 DateTimeConverter,它被转换为一个 DateTime 对象 {22:49:59.1091122},并将 Kind 属性设置为 "Local"。
例如:以下测试未通过:
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选项。
有什么解决办法吗?