Qual è il formato corretto da utilizzare per Data / ora in un file XML


98

Quale formato utilizzo per Data / ora quando scrivo su un file XML utilizzando .NET? Uso semplicemente DateTime.ToString()o devo utilizzare un formato specifico?

Risposte:


138

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.


44

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


10
Tieni presente che questo converte la data in UTC. Quando si elabora la data, è necessario riconvertirla nel fuso orario corrente in base alle impostazioni locali (a meno che non si stia elaborando tutto in UTC). Inoltre, di solito inseriresti una "Z" alla fine per indicare che la data è UTC.
Ryan

"s" funziona quando chiamo un servizio web .net da soap ui.
Tristan Channing

4

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.


jonnii restituirà fondamentalmente lo stesso risultato.
chilltemp

3
In questo caso tutte le date DEVONO essere nel fuso orario UTC altrimenti l'utilizzo del suffisso "Z" è sbagliato.
venerdì

Ripeterò il commento precedente: in realtà non è corretto se dt non è utc.
Brady Moritz

3

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.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.