2017-09-22 5 views
0

J'ai une entité avec un DateTimeOffset (puisque .NET n'a pas de classe Date) qui doit stocker une date (pas de temps). Le problème est que, lorsque je définis la date, par exemple, "2017-9-1" dans la base de données, elle est enregistrée sous "2017-08-31 22: 00: 00 + 00" (2 heures de moins). Je pense qu'il applique le décalage de mon fuseau horaire à l'heure UTC.EntityFramework, Dates et UTC

Je voudrais stocker comme pour stocker "2017-9-1" dans la base de données. La première chose que je pensais est d'ajouter 2 heures à chaque DateTimeOffet, mais cela semble bidon.

Y a-t-il une meilleure façon de travailler avec des dates que celle-ci?

+0

Comment exactement définir la date sur "2017-9-1"? –

+0

Utilisez la propriété [DateTimeOffset.Date] (https://msdn.microsoft.com/en-us/library/system.datetimeoffset.date (v = vs.110) .aspx). –

Répondre

0

Je ne suis pas tout à fait sûr, mais ajouter "0:" avant la date sur la chaîne de format, je pense que cela devrait mettre à votre heure actuelle, sinon il sera par défaut UTC.

Comme ceci:

[DisplayFormat(DataFormatString = "{0:yyyy/dd/MM}")] 
+0

En ce qui concerne l'affichage seulement, non? Je voudrais stocker la date exacte dans la base de données. – SuperJMN

+0

Je ne pense pas, il stocke mon temps actuel dans mon DB. Avoir un peu d'un problème de DB moi-même ATM donc je ne peux pas vérifier à coup sûr, mais je pense que cela vaut aussi pour DB. – Will

0

Si vous utilisez MS Sql, vous pouvez utiliser la variable de date pour stocker seulement la date. Vous pouvez annoter le type de base de données de propriété DateTimeOffset des entités.

[Column(TypeName="date")] 
+0

J'utilise Postgre SQL. Est-ce que ça marche avec ça? – SuperJMN

+0

Je crois que c'est le cas ... https://www.postgresql.org/docs/9.1/static/datatype-datetime.html – MrFitchet