Ich habe eine DateTime, die ich auf " 2009-09-01T00:00:00.000Z
" formatieren möchte , aber der folgende Code gibt mir " 2009-09-01T00:00:00.000+01:00
" (beide Zeilen):
new DateTime(2009, 9, 1, 0, 0, 0, 0, DateTimeKind.Utc).ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffzzz")
new DateTime(2009, 9, 1, 0, 0, 0, 0, DateTimeKind.Utc).ToUniversalTime().ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffzzz")
Irgendwelche Ideen, wie es funktioniert?
.ToUniversalTime()
alles aufrufen, was Sie möchten. Dies ändert nichts. - Wenn Sie jedoch einen universellen Zeitwert als Ortszeit gespeichert haben, ändert sich dieser natürlich (aber in diesem Fall haben Sie größere Probleme!) - Wie auch immer, diese Antwort lautet furchtbar. Sie sollten"O"
stattdessen die Formatzeichenfolge verwenden, die in der folgenden Antwort angegeben ist.2009-09-01T00:00:00.000Z
. Die Verwendung des "O" -Spezifizierers würde ihnen etwas anderes geben :2009-09-01T00:00:00.0000000Z
.Warum nicht einfach den Formatspezifizierer " Round-Trip" ("O", "o") verwenden ?
quelle
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffzzz"
ist kein Zulu-Format.dtVariable.ToUniversalTime().ToString("o")
das wird in"2019-05-26T19:50:34.4400000Z"
oder konvertiert"yyyy-MM-ddTHH:mm:ss.fffffffZ"
. Hinweis: Ich habe dies auch mit dernew Date(dtDateString).getTime()
Methode von Javscript getestet und es analysiert die von dieser erzeugte Datumszeichenfolge korrekt.dto.ToUniversalTime().ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'FFFFFFF'Z'")
. Für den Datensatz wird nur"o"
Offset hinzugefügt, es ist kein Zulu-Format.$"{DateTime.UtcNow:O}"
gibt 2017-02-10T08: 12: 39.483Z zurück
quelle
Das beste Format ist "JJJJ" - "MM" - "TT'T'HH": "MM": "SS". "FffK".
Das letzte K in der Zeichenfolge wird in 'Z' geändert, wenn das Datum UTC ist, oder mit der Zeitzone (+ -hh: mm), wenn es lokal ist. ( http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx )
Wie LukeH sagte, ist es gut, die ToUniversalTime zu verwenden, wenn Sie möchten, dass alle Daten UTC sind.
Der endgültige Code lautet:
quelle
Einige Leute haben darauf hingewiesen, dass 'ToUniversalTime' insofern etwas unsicher ist, als es zu unbeabsichtigten falschen Zeitabbrüchen führen kann. Darauf aufbauend gebe ich ein detaillierteres Beispiel für eine Lösung. Das Beispiel hier erstellt eine Erweiterung des DateTime-Objekts, die sicher eine UTC DateTime zurückgibt, in der Sie ToString wie gewünscht verwenden können.
quelle
Sie möchten die DateTimeOffset- Klasse verwenden.
Entschuldigung, ich habe Ihre ursprüngliche Formatierung mit den Millisekunden verpasst
quelle
Dieser Code funktioniert für mich:
quelle
Versuche dies:
Zuvor gestellte Frage
quelle