Ich muss ein Stück Code aktualisieren, indem ich DateTime.UtcNow
statisch anrufe, um einen Zeitanbieterdienst aufzurufen, der im Prinzip DateTimeOffset.UtcNow
zurückgibt. Um diese DateTimeOffset
-Instanz weiter in DateTime
zu konvertieren, gibt es die DateTime
-Eigenschaft. Alternativ scheint es eine implizite Konvertierung von DateTimeOffset
nach DateTime
zu geben.
Ich bin ein bisschen besorgt, dass es einige Randfälle geben könnte, die ich jetzt nicht sehen kann, wo diese beiden nicht gleichwertig wären. Gibt es?
Wenn Sie sich den Wert von DateTimeOffset.UtcNow.DateTime.Kind
anschauen, sehen Sie, dass es nicht spezifiziert ist. Nicht spezifizierte Arten werden vom Framework als lokale Zeiten behandelt. Die Art von DateTime.UtcNow
ist Utc, daher gibt es Unterschiede, wenn Zeitzonen-Konvertierungen auf die lokale Zeitzone angewendet werden.
Die Umgehung ist die Verwendung von DateTimeOffset.UtcNow.UtcDateTime
, für das die Utc-Art angegeben ist.
Von der .NET-Referenzquelle :
%Vor% Also, ja, es sieht so aus, als wäre es gleichbedeutend mit DateTime.UtcNow
.
Tags und Links .net c# datetime type-conversion datetimeoffset