web-dev-qa-db-ja.com

文字列 '3/18/09 10:16 PM'は有効なAllXsd値ではありません

明らかに、読者は、応答XMLから受信するこの形式が好きではありません。

これを再フォーマットできるかどうか疑問に思います。 DateTimeで次のコードを使用してXmlReaderに変換しようとしています。

reader.ReadContentAsDateTime();
51
user72603

通常、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プロパティを使用して変換を行うことができます-これがあなたがしていることかどうか教えてください...

50
Marc Gravell

XML schema specによると、日時の値はISO8601形式である必要があります(例:

2009-03-13T22:16:00
97
David Norman