Ich bemerkte dieses seltsame Problem in Bezug auf. ToUniversalTime(), aber ich kann nicht herausfinden, warum.. ToUniversalTime(), warum funktioniert es so?
Wenn ich auseinander
DateTime currentServerTime = System.DateTime.Now;
DateTime currentUTCServerTime = currentServerTime.ToUniversalTime();
log.Debug("Current server time :" + currentServerTime);
log.Debug("Current Server UTC Time is :" + currentUTCServerTime);
Ergebnis
Current server time :2/18/2014 2:09:23 PM
Current Server UTC Time is :2/18/2014 7:09:23 PM
5 Stunden schaffen.
Gegeben ist der Server an der Ostküste, mit -5 versetzt. Das ist richtig.
Wenn ich aber tue
String dateTimeString = "7/10/2013";
DateTime baseLined = Convert.ToDateTime(dateTimeString);
DateTime convertedUTCTime = baseLined.ToUniversalTime();
log.Debug(dateTimeString + " is :"+baseLined);
log.Debug(dateTimeString + " UTC time is :" + convertedUTCTime);
Ergebnis
7/10/2013 is : 7/10/2013 12:00:00 AM
7/10/2013 UTC time is: 7/10/2013 4:00:00 AM
4 Stunden auseinander.
Warum ein Ergebnis zeigt 5 Stunden Unterschied und ein anderes zeigt 4 ????
Bitte helfen.
=== ==== bearbeiten
Dank Jon und Usr. Jetzt verstehe ich. ToUniversalTime() berücksichtigt DST des Servers und passt die UTC entsprechend dem DateTime-Objekt an, an das es angehängt ist.
Also versuche ich immer noch, meinen Kopf für diese Situation darum zu wickeln.
In meiner Datenbank, 7/10/2013 ist ein Fälligkeitsdatum und wurde als "7/10/2013 4:00:00 AM" aufgezeichnet (Da während dieser Zeit war es während der Sommerzeit, Offset -4) .
Jetzt ist es in Februar 2014, DST ist nicht in Kraft, Offset ist jetzt -5. Wenn ich jedoch den Zeitzonen-Offset des Benutzers -5 auf "7/10/2013 4:00:00 AM" anwähle, wird dies zum 7/09/2013 anstatt zum 7/10/2013.
Wie gehe ich mit dieser Situation um?
"Vorausgesetzt, der Server befindet sich an der Ostküste, mit -5 Offset. Das ist richtig." - Was denkst du, ist der Offset am 10. Juli? –
@Jon, wow, okay. Das erklärt es sehr. Das bedeutet also, dass ToUniversalTime() auch den Sommerzeit-Offset des Servers berücksichtigt? Das wusste ich nicht !!! – Liming
Ja, es wird die lokale Zeit in eine universelle Zeit umwandeln. Es wäre ziemlich nutzlos, wenn es DST nicht einhalten würde, um ehrlich zu sein. –