Ist DateTimeOffset.UtcNow.DateTime äquivalent zu DateTime.UtcNow?

8

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?

    
Andrei Rînea 11.11.2015, 16:34
quelle

3 Antworten

4

Intern sieht es so aus:

%Vor%

Es sieht also so aus, als könnten Sie eine DateTime-Datei erhalten, die auf UTC basiert, aber dann in Unspecified konvertiert wird.

    
MattC 11.11.2015 16:42
quelle
3

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.

    
mike z 11.11.2015 18:04
quelle
2

Von der .NET-Referenzquelle :

%Vor%

Also, ja, es sieht so aus, als wäre es gleichbedeutend mit DateTime.UtcNow .

    
rory.ap 11.11.2015 16:42
quelle