c#-字符串'3/18/09 10:16 PM'不是有效的AllXsd值

显然,读者不喜欢这种从响应XML传入的格式。

想知道我是否可以重新格式化。 尝试将以下代码与我的XmlReader转换为DateTime

reader.ReadContentAsDateTime();
user72603 asked 2020-01-14T08:33:34Z
2个解决方案
98 votes

根据XML模式规范,日期时间值应采用ISO8601格式,例如

2009-03-13T22:16:00
David Norman answered 2020-01-14T08:34:21Z
50 votes

Xml读者通常期望日期/时间采用非常特定的格式。 您可以使用XmlSerializer自己使用:

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

如果您使用的是其他格式,则必须将其读取为字符串,然后使用XmlSerializer(或类似名称)指定实际的格式字符串:

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

如果您使用的是XmlSerializer,则可以使用shim属性进行转换-让我知道您是否正在执行此操作...

Marc Gravell answered 2020-01-14T08:34:01Z
translate from https://stackoverflow.com:/questions/661881/the-string-3-18-09-1016-pm-is-not-a-valid-allxsd-value