2016-07-11 6 views
2

Ich habe eine Frage zum Datum Uhrzeitformat.
Ich habe eine Zeichenfolge, die meine Datetime darstellt: "2014-08-01T10: 12: 11.0Z". Tatsächlich, so wie ich es verstehe, ist es ein Datetime im utc-Format, weil 'Z' mir einen Offset von UTC anzeigt.DateTime überprüfen, ob es im UTC-Format ist

Und dann versuche ich

DateTime.TryParseExact("2014-08-01T10:12:11.0Z", "yyyy-MM-ddTHH:mm:ssZ", CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal, out value_); 

auszuführen (wo Wert_ meine gerade neu geschaffene Datetime-Objekt) nur um zu überprüfen, ob meine Zeichenfolge UTC-Zeit darstellt. Dieser Ausdruck gibt mir "falsch".

Also, ich frage mich, welches Format sollte ich anstelle von "JJJJ-MM-TTTHH: mm: ssZ" übergeben oder sollte ich etwas anderes ändern?

Antwort

1

Die .0 am Ende dieser Zeichenfolge ist Zehntel Sekunden, so müssen Sie ein Parse-Zeichen dafür hinzufügen: F.

Auch das Parse-Zeichen für Z ist K, nicht Z.

so dass Zeichenfolge analysieren Sie dies tun müssen, um:

DateTime.TryParseExact("2014-08-01T10:12:11.0Z", "yyyy-MM-ddTHH:mm:ss.FK", CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal, out value); 

Beachten Sie auch, dass, wenn Sie Zeitzoneninformationen in der Zeichenfolge wollen analysiert werden (dh, wenn es nicht eine UTC-Zeit ist), es wäre mit dem von der Zeitzone versetzt ist, ersetzt Z wie folgt aussehen + ve oder -ve:

"2014-08-01T10:12:11.0-07:00" // Note time zone offset at the end. 
+0

es ist eine sehr gute Idee, Datum/Zeit-Logik zu entwickeln ', um den Wert zu behandeln * „rein * als“ ein undurchsichtiges "Ding", nicht testen oder Annahmen über den zugrunde liegenden numerischen oder anderen Wert. Wenn Sie "Zulu Zeit" wollen, fragen Sie für den Wert in "Zeitzone Null" konvertiert werden, und darauf vertrauen, dass es sein wird. Wenn du "die lokale Zeit" hier (oder irgendwo ...) willst, bitte explizit darum. –