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

本文关键字:有效 UTC 格式 时间 日期 识别 字符串 | 更新日期: 2023-09-27 18:03:36

我试图用以下节点反序列化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描述。

有谁能帮我指出这个错误吗?

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

尝试在属性中使用"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; }

您正在尝试使用无法工作的Time格式反序列化DateTime。但是在编译时不会得到错误消息,因为DataType是一个字符串。

你应该试试:

[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; }