2008-10-31 10 views

Antwort

119

Ich verwende immer das Format ISO 8601 (z. B. 2008-10-31T15:07:38.6875000-05:00) - date.ToString("o"). Es ist auch die XSD date format. Das ist das bevorzugte Format und ein Standard Date and Time Format string, obwohl Sie eine manuelle Formatstring bei Bedarf verwenden können, wenn Sie den ‚T‘ zwischen dem Datum und der Uhrzeit nicht wollen: date.ToString("yyyy-MM-dd HH:mm:ss");

EDIT: Wenn Sie eine generierte Klasse verwenden aus Als XSD- oder Web-Service können Sie die DateTime-Instanz einfach direkt der Klasseneigenschaft zuweisen. Wenn Sie XML-Text schreiben, verwenden Sie das oben genannte.

3

Was sagt die DTD?

Wenn die XML-Datei für die Kommunikation mit anderer vorhandener Software (z. B. SOAP) vorgesehen ist, überprüfen Sie diese Software auf das, was sie erwartet.

Wenn die XML-Datei für die Serialisierung oder die Kommunikation mit nicht vorhandener Software (z. B. der von Ihnen geschriebenen) gedacht ist, können Sie sie definieren. In diesem Fall würde ich etwas vorschlagen, das sowohl in Ihrer Sprache (n) leicht zu parsen ist als auch für Menschen leicht zu lesen ist. Wenn Sie z. B. mit Ihrer Sprache (egal ob VB.NET oder C# .NET oder was auch immer) ISO-Datumsangaben (JJJJ-MM-TT) leicht analysieren können, würde ich das vorschlagen.

38

EDIT: Das ist ein schlechter Rat. Verwenden Sie "o", wie oben. "s" macht die falsche Sache.

ich dies immer wie folgt:

dateTime.ToUniversalTime().ToString("s"); 

Dies ist korrekt, wenn Ihr Schema wie folgt aussieht:

<xs:element name="startdate" type="xs:dateTime"/> 

die in ergäbe: kann

<startdate>2002-05-30T09:00:00</startdate> 

Sie weitere Informationen erhalten hier: http://www.w3schools.com/xml/schema_dtypes_date.asp

+8

Beachten Sie, dass das Datum in UTC konvertiert wird. Wenn Sie das Datum verarbeiten, müssen Sie es basierend auf dem Gebietsschema in Ihre aktuelle Zeitzone zurück konvertieren (es sei denn, Sie verarbeiten alles in UTC). Außerdem würden Sie normalerweise ein "Z" am Ende setzen, um das Datum als UTC zu bezeichnen. – Ryan

+0

"s" funktioniert für mich beim Aufruf eines .net Web-Service von Soap Ui. –

4

Wenn Sie die XML-Zeichenfolge manuell zusammenstellen, verwenden Sie var.ToUniversalTime().ToString("yyyy-MM-dd'T'HH:mm:ss.fffffffZ"));. Dadurch wird das offizielle Format für die XML-Datumszeit ausgegeben. Sie müssen sich jedoch keine Gedanken über das Format machen, wenn Sie die integrierten Serialisierungsmethoden verwenden.

+0

jonnii wird im Grunde das gleiche Ergebnis zurückgeben. – chilltemp

+3

In diesem Fall MÜSSEN sich alle Daten in der UTC-Zeitzone befinden, andernfalls ist die Verwendung des Suffix "Z" falsch. – Fr0sT

+0

Ich werde den vorherigen Kommentar wiederholen - das ist eigentlich falsch, wenn das dt nicht utc ist. –

Verwandte Themen