我有一个日期序列化为字符串“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选项。
有没有办法解决?