Quel format dois-je utiliser pour la date / heure lors de l'écriture dans un fichier XML à l'aide de .NET? Dois-je simplement utiliser DateTime.ToString()
ou dois-je utiliser un format spécifique?
J'utilise toujours le format ISO 8601 (par exemple 2008-10-31T15:07:38.6875000-05:00
) - date.ToString("o")
. C'est aussi le format de date XSD . Il s'agit du format préféré et d'une chaîne de format de date et d'heure standard , bien que vous puissiez utiliser une chaîne de formatage manuelle si nécessaire si vous ne voulez pas que le «T» entre la date et l'heure:date.ToString("yyyy-MM-dd HH:mm:ss");
EDIT: Si vous utilisez une classe générée à partir d'un XSD ou d'un service Web, vous pouvez simplement affecter l'instance DateTime directement à la propriété de classe. Si vous écrivez du texte XML, utilisez ce qui précède.
EDIT: C'est un mauvais conseil. Utilisez "o", comme ci-dessus. "s" fait la mauvaise chose .
J'utilise toujours ceci:
dateTime.ToUniversalTime().ToString("s");
Ceci est correct si votre schéma ressemble à ceci:
<xs:element name="startdate" type="xs:dateTime"/>
Ce qui entraînerait:
<startdate>2002-05-30T09:00:00</startdate>
Vous pouvez obtenir plus d'informations ici: http://www.w3schools.com/xml/schema_dtypes_date.asp
Si vous assemblez manuellement la chaîne XML, utilisez
var.ToUniversalTime().ToString("yyyy-MM-dd'T'HH:mm:ss.fffffffZ"));
Cela produira le format officiel XML Date Time. Mais vous n'avez pas à vous soucier du format si vous utilisez les méthodes de sérialisation intégrées.la source
Que dit la DTD?
Si le fichier XML est destiné à communiquer avec d'autres logiciels existants (par exemple, SOAP), vérifiez ce logiciel pour ce qu'il attend.
Si le fichier XML est destiné à la sérialisation ou à la communication avec un logiciel non existant (par exemple, celui que vous écrivez), vous pouvez le définir. Dans ce cas, je suggérerais quelque chose qui soit à la fois facile à analyser dans la ou les langues de votre choix et facile à lire pour les humains. par exemple, si votre langage (que ce soit VB.NET ou C # .NET ou autre) vous permet d'analyser facilement les dates ISO (AAAA-MM-JJ), c'est celui que je suggérerais.
la source
La
XmlConvert
classe fournit ces types d'installations. À propos de DateTimes, en particulier, faites attention aux méthodes obsolètes. Voir aussi: https://stackoverflow.com/a/7457718/1288109la source