C # datetime Analysefehler

8

Beim Konvertieren von Datum / Uhrzeit von Zeichenfolge in DateTime erhalte ich nicht den richtigen Wert.

%Vor%

Und mein Ergebnis ist 2012-08-09 8:51:14 PM. Warum wird es verrechnet? Ich möchte nur, dass es den gleichen Wert hat.

    
u84six 08.10.2012, 18:26
quelle

4 Antworten

18

Sie analysieren das UTC-Datum, aber DateTime.Kind ist lokal. Sie sollten mit DateTimeStyles.AdjustToUniversal analysieren, um den Kind als Utc zu markieren.

%Vor%     
John Sobolewski 08.10.2012, 18:34
quelle
3

Was ist Ihre Server-Zeitzone? Wenn Sie AssumeUniversal verwenden, wird Ihre Eingabezeit in UTC-Zeit konvertiert.

Sie wahrscheinlich in EST dann.

    
HOKBONG 08.10.2012 18:29
quelle
3

Sie sollten DateTimeStyles.AdjustToUniversal verwenden. Die Eingabe DateTime ist bereits universell und die Option AdjustToUniversal enum konvertiert die Eingabe in lokale Zeit, obwohl Sie eine resultierende Art von DateTimeKind.Unspecified erhalten.

    
Steve Danner 08.10.2012 18:33
quelle
2

Ich schlage einfach vor, dass Sie .AssumeLocal anstelle von .AssumeUniversal verwenden möchten.

Sie haben einen Zeitstempel mit unbekannter Zeitzone, und wenn Sie wissen, dass sich der Zeitstempel auf ein Ereignis in Ihrer lokalen Zeitzone bezieht, sollten Sie dem Parse mitteilen, dass der Zeitstempel für Sie lokal ist ( dh in Ihrer Zeitzone).

Indem Sie .AssumeUniversal verwenden, weisen Sie den Parser an, den Zeitstempel so zu behandeln, als wäre es ein UTC-Zeitstempel. Wenn Sie ihn mit Ihrer lokalen Zeitzone anzeigen, wird er automatisch um diesen Betrag versetzt.

Bearbeiten:

Eine wichtige Sache: Die Hauptstadt "Z" im Zeitstempel schlägt vor, dass es ein UTC-Zeitstempel ist, was bedeutet Sie möchten es als Universal behandeln. Wenn Sie es als lokalen Zeitstempel behandeln möchten, sollten Sie das Z aus dem Zeitstempel und die entsprechende Parse-Zeichenfolge entfernen.

Referenz: Ссылка

    
JYelton 08.10.2012 18:42
quelle

Tags und Links