c# driver som standard (uden ekstra indstillinger) gemmer lokale datoer som utc-dato i databasen (dato - tidszoneforskydning), men læser tilbage uden nogen handling (altså utc-dato).
På grund af dette, når du indlæser datetime fra databasen, modtager du diff om 2 timer (din tidszone offset). Der er to tilgange til, hvordan man siger til mongodb c#-driveren konverterer utc-datoer til lokale tidszonedatoer under deserialisering:
1.gennem attributterne for et bestemt datofelt:
[BsonDateTimeOptions(Kind = DateTimeKind.Local)]
public DateTime SomeDateProperty {get;set;}
2.gennem globale indstillinger for alle datetime-felter (standard er UtcInstance
):
DateTimeSerializationOptions.Defaults = DateTimeSerializationOptions.LocalInstance;
Når du har gjort #1 eller #2, vil du se lokal dato.
Opdatering:
#2 er forældet i seneste driverversion, så brug koden nedenfor i stedet:
BsonSerializer.RegisterSerializer(typeof(DateTime),
new DateTimeSerializer(DateTimeSerializationOptions.LocalInstance));
Opdatering:
#2 har ændret sig igen:
BsonSerializer.RegisterSerializer(typeof(DateTime), DateTimeSerializer.LocalInstance);