c#-stuurprogramma standaard (zonder extra instellingen) lokale datums opslaan als utc-datum in database (datum - tijdzone-offset) maar teruglezen zonder enige actie (dus utc-datum).
Hierdoor ontvang je bij het laden van datetime uit de database diff in 2 uur (je tijdzone-offset). Er zijn twee manieren om te zeggen tegen mongodb c#-stuurprogramma converteer utc-datums naar lokale tijdzonedatums tijdens deserialisatie:
1.via de attributen voor een bepaald datumveld:
[BsonDateTimeOptions(Kind = DateTimeKind.Local)]
public DateTime SomeDateProperty {get;set;}
2. via globale instellingen voor alle datetime-velden (standaard is UtcInstance
):
DateTimeSerializationOptions.Defaults = DateTimeSerializationOptions.LocalInstance;
Zodra je #1 of #2 hebt gedaan, zie je de lokale datum.
Bijwerken:
#2 is verouderd in de nieuwste versie van het stuurprogramma, dus gebruik in plaats daarvan onderstaande code:
BsonSerializer.RegisterSerializer(typeof(DateTime),
new DateTimeSerializer(DateTimeSerializationOptions.LocalInstance));
Bijwerken:
#2 is weer veranderd:
BsonSerializer.RegisterSerializer(typeof(DateTime), DateTimeSerializer.LocalInstance);