53 votes

La chaîne '3/18/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 ceci. Essayer de convertir en DateTime utilisant le code suivant avec mes XmlReader :

 reader.ReadContentAsDateTime();
 

101voto

David Norman Points 9156

Selon les spécifications du schéma XML, les valeurs de date et heure doivent être au format ISO8601, par exemple, quelque chose comme:

 2009-03-13T22:16:00
 

51voto

Marc Gravell Points 482669

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 en tant que chaîne et utiliser DateTime.TryParseExact (ou similaire) pour spécifier la chaîne de format actuelle:

 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 - laissez-moi savoir si c'est ce que vous faites ...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X