Wie aktualisiere ich DateTime-Objekte in .NET auf standardkonforme Weise?

7

Mein Ziel ist es, das .NET DateTime-Objekt (in C #) zu verwenden und es seriell zu einer Zeichenkette zu serialisieren und zu analysieren (für die Verwendung in XML), die mit Standards kompatibel ist. Der spezifische Standard, an den ich denke, ist der ISO 8601-Standard für die Darstellung von Daten und Zeiten.

Ich möchte eine einfach zu bedienende Lösung (vorzugsweise einen Methodenaufruf pro Richtung)  das wird in und von der verketteten Version des Formats konvertieren. Ich möchte auch lokale Zeitzoneninformationen erhalten.

Hier ist ein Beispiel für die Art von String, die ich gerne bekommen würde:

2009-04-15T10: 55: 03.0174-05: 00

Meine Ziel-.NET-Version ist 3.5.

Ich habe vor einigen Jahren eine Lösung für dieses Problem gefunden, die ein benutzerdefiniertes Format und die DateTime.ToString (string) Methode beinhaltet. Ich war überrascht, dass eine einfachere standardkonforme Lösung nicht existierte. Die Verwendung einer benutzerdefinierten Format-Zeichenfolge zum Serialisieren und Analysieren in einer standardkonformen Weise riecht ein wenig nach mir.

    
Waylon Flinn 15.04.2009, 16:08
quelle

4 Antworten

15

Glücklicherweise gibt es XmlConvert.ToString() und XmlConvert.ToDateTime() , die dieses Format verarbeiten:

%Vor%

(Wählen Sie Ihren geeigneten Serialisierungsmodus)

    
Marc Gravell 15.04.2009, 16:11
quelle
4
Mit

dateobj.ToString ("s") erhalten Sie eine ISO 8601-konforme Zeichenfolgendarstellung, die mit DateTime.Parse ()

deserialisiert werden kann     
jlew 15.04.2009 16:13
quelle
3

Es sieht so aus, als ob .NET sich in den letzten Jahren etwas verbessert hat. Das System.Xml.XmlConvert -Objekt scheint so zu sein, dass es eine ganze Klasse adressieren kann von Bedürfnissen, die in diesem Zusammenhang erscheinen. Die folgenden Funktionen scheinen speziell für die flexible und standardkonforme Konvertierung von DateTime-Objekten entwickelt worden zu sein.

%Vor%

Das folgende Aufzählungselement scheint besonders nützlich zu sein, wenn Sie die ursprünglichen Zeitzoneninformationen beibehalten möchten:

%Vor%

Hier finden Sie Links zur Dokumentation für die Funktionen auf MSDN:

XmlConvert.ToDateTime (Zeichenfolge, System.Xml.XmlDateTimeSerializationMode)

XmlConvert.ToString (DateTime, System.Xml.XmlDateTimeSerializationMode)

    
Waylon Flinn 15.04.2009 16:12
quelle
1

Versuchen Sie Folgendes:

%Vor%     
dthrasher 15.04.2009 16:13
quelle