Comment faire pour enregistrer la date correctement?
Je suis en train d'enregistrer la date (à l'aide de C# pilote officiel):
val = DateTime.Parse(value).Date; //Here date is {11/11/2011 12:00:00 AM}
var update = Update.Set("Date", val);
...
Lorsque je sélectionne la Date à partir de la base de données, la valeur est {11/10/2011 10:00:00 PM}
Comment faire pour enregistrer uniquement la date que je veux?
Vous devez vous connecter pour publier un commentaire.
c# pilote par défaut (sans paramètres supplémentaires) l'économie locale dates utc date dans la base de données (date - décalage horaire), mais la lecture en arrière sans aucune action (oui, date de l'heure utc).
À cause de cela lorsque vous chargement datetime à partir de la base de données que vous recevez diff en 2 heures (votre fuseau horaire). Il existe deux approches de la façon de dire à mongodb c# pilote de convertir des dates utc de fuseau horaire local dates lors de la désérialisation:
1.à travers les attributs de date particulière champ:
2.par le biais de paramètres globaux pour tous les champs datetime (la valeur par défaut est
UtcInstance
):Une fois que vous allez faire #1 ou #2, vous verrez la date locales.
Mise à jour:
#2 est obsolète dans la dernière version du pilote donc utiliser le code ci-dessous à la place:
Mise à jour:
#2 a de nouveau changé:
[BsonDateTimeOptions(Kind = DateTimeKind.UTC)]
encore convertit ma date au format UTCVous êtes en cours d'exécution dans un fuseau horaire question. Votre objet date est probablement dans un fuseau horaire autre que l'UTC (2 heures à l'avance par les regards de celui-ci) ou de votre fuseau horaire par défaut est réglé sur autre chose que de l'UTC. Le pilote va convertir la date, le fuseau horaire approprié avant de les stocker dans la base de données.
Normalement vous n'auriez pas remarqué cela depuis l'inverse (récupération de la date de l'heure UTC à partir de la base de données) doit convertir en arrière à l'original fuseau horaire. Il y a peut-être un problème de pilote que vous utilisez ou C# peut nécessiter un peu plus de code pour obtenir ce droit.
Stocke les dates sous la forme de chaînes est généralement pas une bonne idée car il désactive la gamme des requêtes sur les dates.
Mongo magasins tout en UTC, dans le cas où votre date heure UTC est cela aidera
2.2.4.26 a de nouveau changé:
Dans mon cas
[BsonDateTimeOptions(Kind = DateTimeKind.Local)]
n'a pas fonctionné.Ce que j'ai fait est en dessous de
Mongodb Date de valeur stockée dans "UTC DateTime" format qui comprend à la fois la date & temps. afin de vous juste ne peut pas stocker la date seul dans le domaine. Au lieu de cela, vous pouvez obtenir la date de la partie, seul, dans le code de votre application après la récupération de mongo.
comme en c#
ou