Was ist das richtige Format für Datum / Uhrzeit in einer XML-Datei?

98

Welches Format verwende ich für Datum / Uhrzeit beim Schreiben in eine XML-Datei mit .NET? Benutze ich einfach DateTime.ToString()oder muss ich ein bestimmtes Format verwenden?

Jon B.
quelle

Antworten:

138

Ich benutze immer das ISO 8601 Format (zB 2008-10-31T15:07:38.6875000-05:00) - date.ToString("o"). Es ist auch das XSD-Datumsformat . Dies ist das bevorzugte Format und eine Standardzeichenfolge für Datum und Uhrzeit. Sie können jedoch bei Bedarf eine manuelle Formatzeichenfolge verwenden, wenn Sie das 'T' nicht zwischen Datum und Uhrzeit möchten:date.ToString("yyyy-MM-dd HH:mm:ss");

BEARBEITEN: Wenn Sie eine generierte Klasse aus einer XSD oder einem Webdienst verwenden, können Sie die DateTime-Instanz einfach direkt der Klasseneigenschaft zuweisen. Wenn Sie XML-Text schreiben, verwenden Sie die oben genannten.

Ryan
quelle
44

EDIT: Das ist ein schlechter Rat. Verwenden Sie "o" wie oben. "s" macht das Falsche .

Ich benutze immer das:

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

Dies ist richtig, wenn Ihr Schema so aussieht:

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

Was dazu führen würde:

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

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

jonnii
quelle
10
Beachten Sie, dass dadurch das Datum in UTC konvertiert wird. Wenn Sie das Datum verarbeiten, müssen Sie es basierend auf dem Gebietsschema wieder in Ihre aktuelle Zeitzone konvertieren (es sei denn, Sie verarbeiten alles in UTC). Normalerweise setzen Sie am Ende ein 'Z', um das Datum UTC anzuzeigen.
Ryan
"s" funktioniert für mich, wenn ich einen .net-Webdienst von soap ui aus anrufe.
Tristan Channing
4

Wenn Sie die XML-Zeichenfolge manuell zusammenstellen, verwenden Sie var.ToUniversalTime().ToString("yyyy-MM-dd'T'HH:mm:ss.fffffffZ")); Dies gibt das offizielle XML-Datums- / Uhrzeitformat aus. Sie müssen sich jedoch keine Gedanken über das Format machen, wenn Sie die integrierten Serialisierungsmethoden verwenden.

chilltemp
quelle
jonnii's liefert grundsätzlich das gleiche Ergebnis.
Chilltemp
3
In diesem Fall MÜSSEN alle Daten in der UTC-Zeitzone liegen, da sonst die Verwendung des Suffix "Z" falsch ist.
Fr0sT
Ich werde den vorherigen Kommentar wiederholen - dies ist tatsächlich falsch, wenn der dt nicht utc ist.
Brady Moritz
3

Was hat die DTD zu sagen?

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

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

Tanktalus
quelle