/ / String не був розпізнаний як дійсний DateTime (правильний формат UTC) - c #, xml, серіалізація

Рядок не визнано дійсним DateTime (дійсним форматом 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.

Хто-небудь може допомогти мені вказати на помилку?

Відповіді:

2 для відповіді № 1

Спробуйте скористатись "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; }

1 для відповіді № 2

Ви намагаєтеся Deserialize a DateTime використовуючи Time формат, який не може працювати. Але ви не отримуєте повідомлення про помилку під час компіляції, оскільки 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; }