c#-drivrutinen som standard (utan extra inställningar) sparar lokala datum som utc-datum i databasen (datum - tidszonförskjutning) men läser tillbaka utan någon åtgärd (så, utc-datum).
På grund av detta när du laddar datetime från databasen får du diff på 2 timmar (din tidszonsförskjutning). Det finns två sätt att säga till mongodb c#-drivrutinen konvertera utc-datum till lokala tidszondatum under deserialisering:
1.genom attributen för ett visst datumfält:
[BsonDateTimeOptions(Kind = DateTimeKind.Local)]
public DateTime SomeDateProperty {get;set;}
2.through globala inställningar för alla datetime-fält (standard är UtcInstance
):
DateTimeSerializationOptions.Defaults = DateTimeSerializationOptions.LocalInstance;
När du har gjort #1 eller #2 kommer du att se lokalt datum.
Uppdatering:
#2 är föråldrad i senaste drivrutinsversionen så använd koden nedan istället:
BsonSerializer.RegisterSerializer(typeof(DateTime),
new DateTimeSerializer(DateTimeSerializationOptions.LocalInstance));
Uppdatering:
#2 har ändrats igen:
BsonSerializer.RegisterSerializer(typeof(DateTime), DateTimeSerializer.LocalInstance);