c# - 字符串未被识别为有效的日期时间(有效的 UTC 格式)

标签 c# xml serialization

我正在尝试使用以下节点反序列化 XML 对象:

<startTime>2012-03-19T11:31:03.000Z</startTime>
<endTime>2012-03-19T11:31:03.000Z</endTime>

这些是我用来将 XML 反序列化为的类的属性:

[System.Xml.Serialization.XmlElementAttribute(DataType = "date", ElementName = "startTime")]
public DateTime StartTime { get; set; }

[System.Xml.Serialization.XmlElementAttribute(DataType = "date", ElementName = "endTime")]
public DateTime EndTime { get; set; }

最后,这是我用来反序列化 XML 的代码:

Stream resultStream = await response.Content.ReadAsStreamAsync();
var serializer = new XmlSerializer(typeof(T));
return serializer.Deserialize(resultStream) as T;

但是,代码将抛出异常,告诉我该字符串未被识别为有效的 DateTime 对象 - 基本异常表示 XML 文件在 (1,1926) 处有错误,它直接指向两个时间戳.

关于此错误消息,我似乎能找到的所有信息都是由于格式使用不正确(即日期字符串中使用了错误的特殊字符)引起的。但是,就我而言,该格式似乎 100% 符合 MSDN 描述。

谁能帮我指出错误?

最佳答案

尝试在您的属性中使用 "dateTime" DataType -(观察案例:从小的 d 开始):

[System.Xml.Serialization.XmlElementAttribute(DataType = "dateTime", ElementName = "startTime")]
public DateTime StartTime { get; set; }

[System.Xml.Serialization.XmlElementAttribute(DataType = "dateTime", ElementName = "endTime")]
public DateTime EndTime { get; set; }

关于c# - 字符串未被识别为有效的日期时间(有效的 UTC 格式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31511295/

相关文章:

c# - Convert.ToInt32 和 Int32.Parse 之间有什么区别?

c# - 如何忽略导航历史中的同一页面

c# - .net 中的 XML 序列化

java - Spring +springmvc+mybatis :Injection of autowired dependencies failed

wcf - 强制 WCF 在反序列化期间使用现有缓冲区?

c# - 在 Excel 中使用 VSTO 和 C# 给定起点,如何获得包含 X 行和 Y 行的范围?

c# - 是否可以将 session ID 设置为我在 asp.net 中选择的值

c# - 将 .NET 对象序列化为 JSON

java - 可以使用配置文件来描述 JAXB 导出吗?

xml - 停止 xsd.exe 生成多维数组