Laden...

DateTime Format wird nicht wie erwartet geschrieben

Erstellt von Aastean vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.275 Views
Aastean Themenstarter:in
78 Beiträge seit 2009
vor 13 Jahren
DateTime Format wird nicht wie erwartet geschrieben

Hi alle,

Ich hab zwar schon ge googled und auch versucht hier war zu finden, aber bleibt trotzdem hängen an einer stelle.
Ich will einen gewissen Timestamp in einen XML als attribut schreiben. Soweit so gut, Der Timestamp soll nen bestimmtes Format haben. Auch kein Problem soweit. Nur soll ich auch die Zeitzone dazuschreiben...

Beispiel: 2010-09-30T14:00:00.000+02:00

Meine Lösung:

pb.endtimestamp = DateTime.Now.ToUniversalTime().ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss.fffK");

bis zu dem K funktionierts auch und laut recherche:
K Represents the time zone information of a date and time value (e.g. +05:00)

mein OUTPUT nach dem ich den XML erstellt hab:

<pb id="1" starttimestamp="" endtimestamp="2010-12-20T14:03:11.227Z" />

Warum steht da nen Z? müsste eigentlich +01:00 stehen 😕

Kann mir da wer helfen?

:evil:

54 Beiträge seit 2010
vor 13 Jahren

Hi,
das offset das du anhängen willst kriegst du mit

TimeZone.CurrentTimeZone.GetUtcOffset(DateTime.Now);
Aastean Themenstarter:in
78 Beiträge seit 2009
vor 13 Jahren

Das tut es fast.

Zeigt leider auch sekunden an 😠 und vorne steht kein + bei der Zeitzone.

Hab gehofft es geht eleganter 😉

so wie hier:
yyyy'-'MM'-'dd'T'HH':'mm':'ss.fffffffK 2006-08-22T06:30:07.7199222-04:00

http://www.geekzilla.co.uk/View00FF7904-B510-468C-A2C8-F859AA20581F.htm

leider macht der das K nicht wie gesagt :S auch "zzz" funktioniert nicht, da krieg ich ne exception.

Beim K als attr. schreibt er mir nen "Z" in den XML. also er macht was, aber net det richtige 🤔 🤔

:evil:

N
7 Beiträge seit 2008
vor 13 Jahren

Wenn du deine Zeit vorher nach UTC konvertiert ist, kommt doch immer +/- 0 raus?
Ich nehme an, dass das auch der Grund dafür sein könnte, dass das Z im ToString nicht interpretiert wird.

System.Diagnostics.Debug.WriteLine(DateTime.Now.ToUniversalTime().ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss.fffK"));
System.Diagnostics.Debug.WriteLine(DateTime.Now.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss.fffK"));
2010-12-20T15:23:35.251Z
2010-12-20T16:23:35.276+01:00
Aastean Themenstarter:in
78 Beiträge seit 2009
vor 13 Jahren

Jo,

das wars Oo.

Manchmal sieht man den Wald vor lauter Bäumen nicht 🤔 🤔

Danke und schonmal ein Frohes Weihnachtsfest.

:evil:

C
252 Beiträge seit 2007
vor 13 Jahren

Ich mache sowas eigentlich immer mit der XmlConvert Klasse. Damit geht das ganz easy.
Früher hab ich das auch immer manuell mit diversen Format Angaben gebastelt bis ich XmlConvert entdeckt habe. Mit der Klasse wird einem aber alles abgenommen und man kann so gut will alle Typen kovertieren und eben auch wieder zurück wenn man XML ausliest.


XmlConvert.ToString(DateTime.Now, XmlDateTimeSerializationMode.RoundtripKind)

Aastean Themenstarter:in
78 Beiträge seit 2009
vor 13 Jahren

Werd ich mir mal heute angucken, danke für den Tip.

:evil: