Risposte:
Uso sempre il formato ISO 8601 (ad esempio 2008-10-31T15:07:38.6875000-05:00) - date.ToString("o"). È anche il formato della data XSD . Questo è il formato preferito e una stringa di formato data e ora standard , sebbene sia possibile utilizzare una stringa di formato manuale se necessario se non si desidera la "T" tra la data e l'ora:date.ToString("yyyy-MM-dd HH:mm:ss");
EDIT: se stai utilizzando una classe generata da un XSD o un servizio Web, puoi semplicemente assegnare l'istanza DateTime direttamente alla proprietà della classe. Se stai scrivendo testo XML, usa quanto sopra.
EDIT: questo è un cattivo consiglio. Usa "o", come sopra. "s" fa la cosa sbagliata .
Lo uso sempre:
dateTime.ToUniversalTime().ToString("s");
Questo è corretto se il tuo schema ha questo aspetto:
<xs:element name="startdate" type="xs:dateTime"/>
Il che si tradurrebbe in:
<startdate>2002-05-30T09:00:00</startdate>
Puoi ottenere maggiori informazioni qui: http://www.w3schools.com/xml/schema_dtypes_date.asp
Se stai assemblando manualmente la stringa XML, usa var.ToUniversalTime().ToString("yyyy-MM-dd'T'HH:mm:ss.fffffffZ")); That produrrà il formato XML Date Time ufficiale. Ma non devi preoccuparti del formato se usi i metodi di serializzazione incorporati.
Cosa ha da dire il DTD?
Se il file XML è per la comunicazione con altri software esistenti (ad esempio SOAP), controllare quel software per quello che si aspetta.
Se il file XML è per la serializzazione o la comunicazione con software inesistente (ad esempio, quello che stai scrivendo), puoi definirlo. In tal caso, suggerirei qualcosa che sia facile da analizzare nella tua lingua preferita e di facile lettura per gli esseri umani. ad esempio, se la tua lingua (sia VB.NET o C # .NET o qualsiasi altra cosa) ti consente di analizzare facilmente le date ISO (AAAA-MM-GG), è quella che suggerirei.
La XmlConvertclasse fornisce questi tipi di servizi. Riguardo a DateTimes, in particolare, fai attenzione ai metodi obsoleti. Vedi anche: https://stackoverflow.com/a/7457718/1288109