web-dev-qa-db-fra.com

La chaîne '18/03/09 10:16 PM' n'est pas une valeur AllXsd valide

Évidemment, le lecteur n'aime pas ce format provenant de la réponse XML.

Vous vous demandez si je peux reformater cela. Essayer de convertir en DateTime en utilisant le code suivant avec mon XmlReader:

reader.ReadContentAsDateTime();
51
user72603

Les lecteurs Xml attendent généralement des dates/heures dans un format très spécifique; vous pouvez l'utiliser vous-même en utilisant XmlConvert:

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

Si vous utilisez autre chose, vous devrez le lire sous forme de chaîne et utiliser DateTime.TryParseExact (ou similaire) pour spécifier la chaîne de format réelle:

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

Si vous utilisez XmlSerializer, vous pouvez utiliser une propriété shim pour effectuer la conversion - faites-moi savoir si c'est ce que vous faites ...

50
Marc Gravell

Selon la spécification XML schéma , les valeurs de date et d'heure doivent être au format ISO8601, par exemple, quelque chose comme

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