Подтвердить что ты не робот

Строка '3/18/09 10:16 PM' не является допустимым значением AllXsd

Очевидно, читателю не нравится этот формат, поступающий из XML-ответа.

Интересно, могу ли я переформатировать это. Попытка конвертировать в DateTime с помощью следующего кода с моим XmlReader:

reader.ReadContentAsDateTime();
4b9b3361

Ответ 1

Читатели Xml обычно ожидают даты/время в очень специфическом формате; вы можете использовать это самостоятельно, используя XmlConvert:

string s = XmlConvert.ToString(DateTime.Now);
DateTime when = XmlConvert.ToDateTime(s);

Если вы используете что-то еще, вам нужно будет прочитать его как строку и использовать DateTime.TryParseExact (или аналогичный), чтобы указать фактическую строку формата:

string s = reader.ReadContentAsString();
DateTime when = DateTime.ParseExact(s, "M/d/yy hh:mm tt",
     CultureInfo.InvariantCulture);

Если вы используете XmlSerializer, вы можете использовать свойство shim для преобразования - сообщите мне, если это то, что вы делаете...

Ответ 2

В соответствии с спецификацией XML schema значения даты должны быть в формате ISO8601, например, что-то вроде

2009-03-13T22:16:00