Pilote c# par défaut (sans paramètres supplémentaires) enregistrant les dates locales en tant que date utc dans la base de données (date - décalage de fuseau horaire) mais relisant sans aucune action (donc, date utc).
Pour cette raison, lorsque vous chargez datetime à partir de la base de données, vous recevez un diff en 2 heures (votre décalage de fuseau horaire). Il existe deux approches pour indiquer au pilote mongodb c# convertir les dates utc en dates de fuseau horaire local lors de la désérialisation :
1.via les attributs d'un champ de date particulier :
[BsonDateTimeOptions(Kind = DateTimeKind.Local)]
public DateTime SomeDateProperty {get;set;}
2.via les paramètres globaux pour tous les champs datetime (la valeur par défaut est UtcInstance
):
DateTimeSerializationOptions.Defaults = DateTimeSerializationOptions.LocalInstance;
Une fois que vous aurez fait #1 ou #2, vous verrez la date locale.
Mise à jour :
#2 est obsolète dans la dernière version du pilote, utilisez donc le code ci-dessous :
BsonSerializer.RegisterSerializer(typeof(DateTime),
new DateTimeSerializer(DateTimeSerializationOptions.LocalInstance));
Mise à jour :
#2 a encore changé :
BsonSerializer.RegisterSerializer(typeof(DateTime), DateTimeSerializer.LocalInstance);